分页方法,始终只生成指定数量的页码

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

分页方法,始终只生成指定数量的页码

人不自在   2021-01-27 我要评论
 /// <summary>
        /// 计算按当前页码及最大生成页条数在总页数时生成的两个下标值
        /// 例如pageIndex=4,当前数据一共有7页(pageLength)
        /// 而需要生成5页(pageCount),那么最终会生成两个值2和6
        /// 前端在使用时只用以2开始以6结尾生成对应的页码标签即可
        /// </summary>
        /// <param name="pageIndex">当前页码</param>
        /// <param name="pageLength">所有页码数量</param>
        /// <param name="pageCount">要生成的页码数量</param>
        /// <returns>第一页的页码,最后一页的页码</returns>
        private Tuple<int, int> GetPages(int pageIndex, int pageLength, int pageCount = 5)
        {
            if (pageIndex > pageLength)
            {
                pageIndex = pageLength;
            }
            if (pageIndex < 1)
            {
                pageIndex = 1;
            }
            if (pageLength <= pageCount)
            {
                return new Tuple<int, int>(1, pageLength);
            }
            else
            {
                int left = 1;
                int count = pageCount;

                if (pageIndex - 2 <= 1)
                {
                    return new Tuple<int, int>(left, count);
                }
                else
                {

                    //left count均要计算
                    if (pageIndex + 2 <= pageLength)
                    {
                        //左右都充足
                        left = pageIndex - 2;
                        count = pageIndex + 2;
                        return new Tuple<int, int>(left, count);
                    }
                    else
                    {
                        //左充右缺
                        count = pageLength;
                        left = pageLength - 4;
                        return new Tuple<int, int>(left, count);

                    }
                }

            }
        }

  这个方法的使用先决条件是要先计算出当前查询的数据一共能分多少数量的页码出来

这个也很好计算: pageLength = (int)Math.Ceiling(dataCount/ pageSize*1.0);   // 数据量/每页条数 取最大值

 

每页2条数量,最多显示5个页码

 

当总页码数量不足以分5页时

效果图:

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们