牛腩系统实现GridView分页

           对于Web开发最多的是涉及数据库的操作,当界面上查询到较多的数据库时通过分页来简化界面,本次实现了对如下界面的优化。


真分页:从数据库中选择当前页的记录

假分页:从数据库中选择所有的记录再进行分页

牛腩系统我实现的是真分页:

1.先下载ASPNetPager控件的dll文件

下载地址: http://files.cnblogs.com/tandyshen/AspNetPager.rar

2.工具箱引用控件,从本地浏览dll文件位置选中文件引用



3.对于D层以及相关数据库语句 

string sql = "select * from(selectROW_NUMBER() over(order by id desc) as row,T.* from news T) as TT where TT.rowbetween @startIndex and @endIndex"

 
  
/// <summary>
        /// 分页功能
        /// </summary>
        /// <param name="startIndex">开始页</param>
        /// <param name="endIndex">结束页</param>
        /// <returns>返回Datatable</returns>
        public DataTable SelectToPage(int startIndex, int endIndex)
        {
            DataTable dt = new DataTable();
            SqlParameter[] paras = new SqlParameter[]
            {
            new SqlParameter("@startIndex",startIndex),
            new SqlParameter("@endIndex",endIndex)
            };

            string sql = "select * from(select ROW_NUMBER() over(order by id desc) as row,T.* from news T) as TT where TT.row between @startIndex and @endIndex";
            dt = sqlhelper.ExecuteQuery(sql, paras, CommandType.Text);

            return dt;
        }
 
  

4.对于B层代码

//实现分页
        public DataTable SelectToPage(int startIndex, int endIndex)
        {
            return cdao.SelectToPage(startIndex,endIndex);
        }

5.Web界面添加控件以及事件



注意事项:对于控件没有引用时总是提示控件创建错误,我的是引用成功还在提示,解决方法是清理解决方案重新加载打开页面。

源码自动生成以及控件属性设置

<webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页" Width="470px" PageSize="3" AlwaysShow="true" OnPageChanged="AspNetPager1_PageChanged" ShowCustomInfoSection="Right" >
                </webdiyer:AspNetPager>

对于AspNetPager控件的改变事件

 //分页功能实现
        protected void AspNetPager1_PageChanged(object sender, EventArgs e)
        {

            int startIndex = AspNetPager1.StartRecordIndex;
            int endIndex = AspNetPager1.EndRecordIndex;
            DataTable dt =new CategoryManager().SelectToPage(startIndex, endIndex);

            repComment.DataSource= dt;
            repComment.DataBind();  
        }

对于管理新闻窗体加载事件的修改

protected void Page_Load(object sender, EventArgs e)
        {
            //判断session里面是否存在管理员
            if (Session["admin"]!=null && Session["admin"].ToString()=="niunan")
            {
                //已登录
                if (!Page.IsPostBack)
                {
                    //页面第一次加载,绑定类别列表
                    DataTable dt = new CategoryManager().selectAll();
                    AspNetPager1.RecordCount = dt.Rows.Count;
                    int startIndex = AspNetPager1.StartRecordIndex;
                    int endIndex = AspNetPager1.EndRecordIndex;
                    DataTable dtpage = new NewsManager().SelectToPage(startIndex, endIndex);
                    repComment.DataSource = dtpage;
                    repComment.DataBind();
                }
            }
            else
            {
                //未登录
                Response.Redirect("Login.aspx");
            }
        }

6.实现后界面








猜你喜欢

转载自blog.csdn.net/shichuwu/article/details/79520143
今日推荐