当前位置: 代码迷 >> 综合 >> 再来一个优秀的分页
  详细解决方案

再来一个优秀的分页

热度:59   发布时间:2024-02-25 08:03:36.0

/// <summary>
        /// 返回分页页码
        /// </summary>
        /// <param name="pageSize">页面大小</param>
        /// <param name="pageIndex">当前页</param>
        /// <param name="totalCount">总记录数</param>
        /// <param name="linkUrl">链接地址,__id__代表页码</param>
        /// <param name="centSize">中间页码数量</param>
        /// <returns></returns>
        public static string OutPageList(int pageSize, int pageIndex, int totalCount, string linkUrl, int centSize)
        {

            //计算页数
            if (totalCount < 1 || pageSize < 1)
            {
                return "";
            }
            int pageCount = totalCount / pageSize;
            if (pageCount < 1)
            {
                return "";
            }
            if (totalCount % pageSize > 0)
            {
                pageCount += 1;
            }
            if (pageCount <= 1)
            {
                return "";
            }

            StringBuilder pageStr = new StringBuilder();
            string pageId = "__id__";
            string firstBtn = "<li><a href=\"" + ReplaceStr(linkUrl, pageId, (pageIndex - 1).ToString()) + "\">上一页</a></li>";
            string lastBtn = "<li><a href=\"" + ReplaceStr(linkUrl, pageId, (pageIndex + 1).ToString()) + "\">下一页</a></li>";
            string firstStr = "<li><a href=\"" + ReplaceStr(linkUrl, pageId, "1") + "\">1</a></li>";
            string lastStr = "<li><a href=\"" + ReplaceStr(linkUrl, pageId, pageCount.ToString()) + "\">" + pageCount.ToString() + "</a></li>";

            if (pageIndex <= 1)
            {
                firstBtn = "<li><span class=\"disabled\">上一页</span><li>";
            }
            if (pageIndex >= pageCount)
            {
                lastBtn = "<li><span class=\"disabled\">下一页</span></li>";
            }
            if (pageIndex == 1)
            {
                firstStr = "<li><span class=\"active\">1</span></li>";
            }
            if (pageIndex == pageCount)
            {
                lastStr = "<li><span class=\"active\">" + pageCount.ToString() + "</span></li>";
            }
            int firstNum = pageIndex - (centSize / 2); //中间开始的页码
            if (pageIndex < centSize)
                firstNum = 2;
            int lastNum = pageIndex + centSize - ((centSize / 2) + 1); //中间结束的页码
            if (lastNum >= pageCount)
                lastNum = pageCount - 1;

            //首页
            pageStr.Append("<li><a href=\"" + ReplaceStr(linkUrl, pageId, "1") + "\">首页</a></li>");


            pageStr.Append(firstBtn + firstStr);
            if (pageIndex >= centSize)
            {
                pageStr.Append("<li><span>...</span>\n</li>");
            }
            for (int i = firstNum; i <= lastNum; i++)
            {
                if (i == pageIndex)
                {
                    pageStr.Append("<li><span class=\"active\">" + i + "</span></li>");
                }
                else
                {
                    pageStr.Append("<li><a " + (pageIndex == i ? "class=\"active\"" : "") + " href=\"" + ReplaceStr(linkUrl, pageId, i.ToString()) + "\">" + i + "</a></li>");
                }
            }
            if (pageCount - pageIndex > centSize - ((centSize / 2)))
            {
                pageStr.Append("<li><span>...</span></li>");
            }
            pageStr.Append(lastStr + lastBtn);

            //未页
            pageStr.Append("<li><a href=\"" + ReplaceStr(linkUrl, pageId, pageCount.ToString()) + "\">末页</a></li>");

            return pageStr.ToString();
        }