asp.net自制分頁頁碼條控制元件

xiaohei.info發表於2014-07-07

用過微軟的伺服器控制元件分頁的人都知道~那卡的一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();
        }
    }




相關文章