自己重构的一个分页_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 自己重构的一个分页

自己重构的一个分页

 2014/8/21 23:13:52  Deng_Wu  程序员俱乐部  我要评论(0)
  • 摘要:///<summary>///分页控件(wu)///</summary>///<paramname="RecordCount">记录数</param>///<paramname="curPage">当前页</param>///<paramname="PageSize">一页多少条数据</param>///<paramname="actionURL">分页跳转链接</param>
  • 标签:一个 自己
class="code_img_closed" src="/Upload/Images/2014082123/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('3c5d7df0-9ded-41f7-9b2e-ab1f93559a8f',event)" src="/Upload/Images/2014082123/2B1B950FA3DF188F.gif" alt="" />
 /// <summary>
        /// 分页控件(wu)
        /// </summary>
        /// <param name="RecordCount">记录数</param>
        /// <param name="curPage">当前页</param>
        /// <param name="PageSize">一页多少条数据</param>
        /// <param name="actionURL">分页跳转链接</param>
        /// <param name="argName">URL当前页参数命名</param>
        /// <returns></returns>
        public static string ToPageHtml(int RecordCount, int curPage, int PageSize, string actionURL, string argName)
        {
            StringBuilder sb = new StringBuilder();
            if (RecordCount > 0)
            {
                int pageSum = RecordCount / PageSize; //总页数
                if (RecordCount % PageSize > 0)
                { //求余
                    pageSum = pageSum + 1;
                }
                int pageMaxSum = 3; //分页栏当前页按钮或左或右最多显示的按钮

                if (curPage < 1) curPage = 1;
                if (curPage > pageSum) curPage = pageSum;
                sb.AppendLine("<div class=\"liem-bottom\"><ul class=\"tunepage\" >\r\n");
                //上一页
                if (1 == curPage)
                {
                    //sb.AppendLine("<li><a>上一页</a></li>");
                }
                else
                {
                    sb.AppendFormat("<li><a href=\"" + GetAnchorUrl(curPage - 1, actionURL, argName) + "\">上一页</a></li>");
                }
                var startIndex = 1;
                var endIndex = pageSum;
                if (pageSum > pageMaxSum * 2 + 1)
                {
                    if (curPage - pageMaxSum > 0)
                    {
                        if (curPage + pageMaxSum < pageSum)
                        {
                            startIndex = curPage - pageMaxSum;
                            endIndex = curPage + pageMaxSum;
                        }
                        else
                        {
                            startIndex = pageSum - pageMaxSum * 2;
                        }
                    }
                    else
                    {
                        endIndex = pageMaxSum * 2 + 1;
                    }
                }
                if (pageSum > 1)
                {
                    if (startIndex.Equals(2))
                    {
                        sb.AppendLine("<li><a href=\"" + GetAnchorUrl(1, actionURL, argName) + "\">1</a></li>");
                        endIndex--;
                    }
                    else if (startIndex > 2)
                    {
                        sb.AppendLine("<li><a href=\"" + GetAnchorUrl(1, actionURL, argName) + "\">1</a></li>");
                        sb.AppendLine("<li>...</li>");
                    }
                    //页码
                    for (var i = startIndex; i <= endIndex; i++)
                    {
                        if (curPage == i)
                        {
                            sb.AppendLine("<li><a class=\"current\">" + curPage + "</a></li>");
                        }
                        else
                        {
                            sb.AppendLine("<li><a href=\"" + GetAnchorUrl(i, actionURL, argName) + "\">" + i + "</a></li>");
                        }
                    }
                    if (endIndex < pageSum - 1)
                    {
                        sb.AppendLine("<li>…</li>");
                        sb.AppendLine("<li><a href=\"" + GetAnchorUrl(pageSum, actionURL, argName) + "\">" + pageSum + "</a></li>");
                    }
                    else if (endIndex < pageSum)
                    {
                        sb.AppendLine("<li><a href=\"" + GetAnchorUrl(pageSum, actionURL, argName) + "\">" + pageSum + "</a></li>");
                    }
                }
                //下一页
                if (curPage == pageSum || pageSum == 0)
                {
                    //sb.AppendLine("<li><a>下一页</a></li>");
                }
                else
                {
                    sb.AppendLine("<li><a href=\"" + GetAnchorUrl(curPage + 1, actionURL, argName) + "\">下一页</a></li>");
                }
                sb.AppendLine("\r\n</ul></div>");
            }
            return sb.ToString();
        }

        private static string GetAnchorUrl(int curPage, string actionURL, string argName)
        {
            if (actionURL.IndexOf("?") > 0)
            {
                return string.Format("{0}&{1}={2}", actionURL, argName, curPage);
            }
            return string.Format("{0}?{1}={2}", actionURL, argName, curPage);
        }
View Code
create procedure usp_FenYe
@pageIndex int,
@pageCount int=10,
@pageTotalCount int output
as
begin
  --计算出总页数
  declare @totalData int;
  set @totalData=(select count(*) from T)
  set @pageTotalCount=Ceiling(@totalData*1.0/@pageCount);
  --得到数据
  select * from
  (select *,num=row_number() over(order by id) from T) as t
   where t.num between 
    @pageCount * (@pageInde-1)+1 and @pageCount* @pageIndex;
end
go
View Code

写上一个存储过程分页,不解释,有点基础的人应该看得懂。

上一篇: 【转载】Lucene.Net无障碍学习和使用:搜索篇 下一篇: 没有下一篇了!
发表评论
用户名: 匿名