asp.net自制分页页码条控件

用过微软的服务器控件分页的人都知道~那卡的一A啊~

遂想自制分页页码条控件以备不时之需。

走你~

public static class PageShow
    {
        /// <summary>
        /// 分页页码条
        /// </summary>
        /// <param name="requestHref">请求的地址</param>
        /// <param name="totalCount">数据总条数</param>
        /// <param name="currentPage">当前页码</param>
        /// <param name="pageSize">每页个数</param>
        /// <returns></returns>
        public static string Show(string requestHref, int totalCount, int currentPage, int pageSize)
        {
            //初始化pageSize和totalPages
            pageSize = pageSize == 0 ? 6 : pageSize;//默认为每页显示6条数据
            var totalPages = Math.Max((totalCount + pageSize - 1) / pageSize, 1);//Math.Ceiling(totalCount / (pageSize / 1.0));//使用Ceiling函数也可以,效果是一样的,根据数据的总条数和每页要显示的个数,计算出总页数,如:共有96条数据,每页显示6条,则总页数为16
            var outPut = new StringBuilder();//构建输出字符串
            outPut.AppendFormat("<div class='pagination'>");//所有的样式需要自定义
            //当总页数大于一页才分页显示,否则直接显示出该页
            if (totalPages > 1)
            {
                //当前页面不是第一页的时候显示首页链接
                if (currentPage != 1)
                {
                    outPut.AppendFormat("<a class='pageLink' href='{0}pageIndex=1&&pageSize={1}'>首页</a>"
                                        , requestHref, pageSize);
                }
                //当前页面大于第一页的时候显示上一页链接
                if (currentPage > 1)
                {
                    outPut.AppendFormat("<a class='pageLink' href='{0}pageIndex={1}&&pageSize={2}'>上一页</a>"
                        , requestHref, currentPage - 1, pageSize);
                }
                //否则上一页无法点击
                else
                {
                    outPut.AppendFormat("<span class='disabled'>上一页</span>");
                }
                outPut.Append(" ");
                //循环输出页面列表
                const int currint = 3;
                //最多有6个超链接,前3个后3个
                for (int i = 0; i < 6; i++)
                {
                    if (currentPage + i - currint >= 1 && currentPage + i - currint <= totalPages)
                    {
                        if (currint == i)
                        {
                            outPut.AppendFormat("<span class='disabled'>{0}</span>", currentPage + i - currint);
                        }
                        else
                        {
                            outPut.AppendFormat("<a class='pageLink' href='{0}pageIndex={1}&&pageSize={2}'>{3}</a>"
                                , requestHref, currentPage + i - currint, pageSize, currentPage + i - currint);
                        }
                    }
                    outPut.Append(" ");
                }
                if (currentPage < totalPages)
                {
                    outPut.AppendFormat("<a class='pageLink' href='{0}pageIndex={1}&&pageSize={2}'>下一页</a>"
                                    , requestHref, currentPage + 1, pageSize);
                }
                else
                {
                    outPut.AppendFormat("<span class='disabled'>下一页</span>");
                }
                outPut.Append(" ");
                if (currentPage != totalPages)
                {
                    outPut.AppendFormat("<a class='pageLink' href='{0}pageIndex={1}&&pageSize={2}'>末页</a>"
                                    , requestHref, totalPages, pageSize);
                }
                outPut.Append(" ");
            }
            outPut.AppendFormat("第{0}页/共{1}页", currentPage, totalPages);
            outPut.AppendFormat("</div>");
            return outPut.ToString();
        }
    }




posted @ 2014-07-07 11:59  蒋源德  阅读(290)  评论(0编辑  收藏  举报