ASP.NET代码分页

       此函数只接收前端传过来的参数返回多少页的多少条数据,上一页下一页等前端算法在前端完成,后端只对查出的所有数据进行分页

一般情况sql分页就够了,此方法是为了应对二次处理后的数据分页

       比如sql查出的数据,又进行分组及其他手段处理,前端还要分页显示,用此方法最是合适!



        /// <summary>

        /// 为列表分页
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="dataList">列表</param>
        /// <param name="currentPage">当前页数</param>
        /// <param name="pageSize">页大小</param>
        /// <returns></returns>
        /// <remarks>added by lihz 2013.11.28</remarks>
        public  Page<T> DataPaging<T>(IList<T> dataList, int currentPage, int pageSize) where T : class
        {
            if (dataList == null)
            {
                throw new ArgumentException("列表不可为空!");
            }
            if (pageSize <= 0)
            {
                throw new ArgumentException("页大小必须大于0!");
            }


            if (currentPage < 1)
            {
                throw new Exception("当前页数必须大于0");
            }




            int count = dataList.Count;
            if (count == 0)
            {
                //记录条数为0,则尾页数为1
                return new Page<T>
                {
                    PageCurrent = 1,
                    total = 0,
                    PageSize = pageSize,
                    data = dataList
                };
            }
            int quotient = count / pageSize;
            int remainder = count % pageSize;
            //尾页数
            int maxPageCount = quotient + (remainder == 0 ? 0 : 1);
            //如果当前页大于尾页数,则当前页为尾页数
            if (currentPage > maxPageCount) currentPage = maxPageCount;


            var page = new Page<T>
            {
                total = count,
                PageSize = pageSize,
                PageCurrent = currentPage
            };




            int beginIndex = (currentPage - 1) * pageSize;
            int endIndex = currentPage * pageSize - 1;
            //非满页
            if (endIndex >= count) endIndex = count - 1;


            for (int i = beginIndex; i <= endIndex; i++)
            {
                page.data.Add(dataList[i]);
            }


            return page;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值