数据分页的实现

实现分页可以利用两个控件:GridView控件和DataList控件
GridView控件是一种数据绑定控件,以表格的形式显示数据,并且自身内置分页功能,支持基本的分页实现.

主要功能代码:
//前端页面:

<div>
     <asp:GridView ID="GridView1" runat="server" OnPageIndexChanging="GridView1_PageIndexChanging">
      </asp:GridView>
</div>

//后端数据:

//PageIndexChanging方法实现分页功能
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            dbind();
        }
      //封装分页数据的方法
        public void dbind()
        {
            newsClass cs = new newsClass();
            string sql="select * from List_Info";
            this.GridView1.DataSource = cs.GetDataSet(sql);
            this.GridView1.DataBind();
        }

DataList控件也是数据绑定控件,借助PagedDataSource类实现的.

实现过程:
D层://计算数据的总条数

 public int GetRecordCount()
        {
            string sql = "select count(*)from List_Info";
            return Convert.ToInt32(SqlHelper.Getcount(sql));
        }

D层://获取分页数据范围

public DataSet GetPageList(int start, int end)
        {
            string sql = "select * from (select * ,row_number()over(order by id)as num from List_Info)as t where t.num>=@start and t.num<=@end";
            SqlParameter[] ps =
            {
                new SqlParameter("@start",SqlDbType.Int,4),
                new SqlParameter("@end", SqlDbType.Int, 4),
            };
            ps[0].Value = start;
            ps[1].Value = end;
            return SqlHelper.ExecuteNonQuery(sql, ps);
        }

B层://获取总页数的数据,利用Math.Ceiling算法+1

        UserManagerDal mage = new UserManagerDal();
        /// <summary>
        /// 获取总页数
        /// </summary>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public int GetPageCount(int pageSize)
        {
            int recordCount = mage.GetRecordCount();
            int pageCount = Convert.ToInt32(Math.Ceiling((double)recordCount / pageSize));
            return pageCount;
        }

B层://逻辑判断分页数据范围

        /// <summary>
        /// 获取指定范围的分页数据
        /// </summary>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List<Lists>GetPageList(int pageIndex,int pageSize)
        {
            int start = (pageIndex - 1) * pageSize + 1;
            int end = pageIndex * pageSize;
            DataSet ds = mage.GetPageList(start, end);
            return DataTableToList(ds.Tables[0]);
        }

Web.cs层:

        protected void Page_Load(object sender, EventArgs e)
        {
            //首次进入;
            if (!IsPostBack)
                {
                //调用封装方法;
                    ListPage();
                }
        }
        public int PageCount{get;set;}
        public int PageIndex{get;set;}
        //分页的封装方法;
        protected void ListPage()
        {
            int pageIndex;
            if (!int.TryParse(Request["pageIndex"],out pageIndex))
            {
                pageIndex = 1;
            }
            int pageSize = 10;
            UserManagerBll mage = new UserManagerBll();
            int pageCount = mage.GetPageCount(pageSize);
            PageCount = pageCount;
            
            //三元表达式,进行判断;
            pageIndex = pageIndex < 1 ? 1 : PageIndex;
            pageIndex = pageIndex > pageCount ? pageCount : PageIndex;
            PageIndex = pageIndex;
            
            //调用B层的分页数据范围的方法;
            this.ListPage.DataSource = UserManagerBll.GetPageList(pageIndex, pageSize);
            this.ListPage.DataBind();
        }

页面显示:

<div class="pagelist">
   <%=common.PageBarHelper.GetPageBar(PageIndex,PageCount)%>
</div>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值