簡單好用的ASP.NET分頁類(支援AJAX、自訂文字)

來源:互聯網
上載者:User

   這篇文章主要介紹了簡單好用的ASP.NET分頁類(支援AJAX、自訂文字),本文直接給出實現代碼和使用方法,需要的朋友可以參考下

  在做網站沒用 JS UI控制項時 很實用

  用法:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var ps=new PageString();   /*選擇性參數*/   ps.SetIsEnglish = true;// 是否是英文 (預設:false) ps.SetIsShowText = true;//是否顯示分頁文字 (預設:true) //ps.TextFormat="" (預設值:《span class="pagetext"》《strong》總共《/strong》:{0} 條 《strong》當前《/strong》:{1}/{2}《/span》) //ps.SetPageIndexName Request["pageIndex"](預設值:"pageIndex") ps.SetIsAjax = false;// (預設值:"false")   /*函數參數*/ int total = 10000; int pageSize = 10; int pageIndex = Convert.ToInt32(Request["pageIndex"]);   var page = ps.ToString(total, pageSize, pageIndex, "/UI/PageStringTest.aspx?");   //擷取 page html 輸出 Response.Write(page);

  效果:

  代碼:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions;   namespace SyntacticSugar { /// <summary> /// ** 描述:分頁類 /// ** 創始時間:2015-5-29 /// ** 修改時間:- /// ** 作者:sunkaixuan public class PageString { /// <summary> /// 是否是英文 (預設:false) /// </summary> public bool SetIsEnglish { get; set; } /// <summary> /// 是否顯示分頁文字(預設:true) /// </summary> public bool SetIsShowText { get; set; } /// <summary> /// 樣式 (預設:"pagination") /// </summary> public string SetClassName { get; set; } /// <summary> /// 分頁參數名 (預設:"pageIndex") /// </summary> public string SetPageIndexName { get; set; } /// <summary> /// 是否是非同步 同步 href='' 非同步 onclick=ajaxPage() (預設:false) /// </summary> public bool SetIsAjax { get; set; }   /// <summary> /// 自訂文字 /// string.Format("{0}{1}{2}","總記錄數","當前頁數","總頁數") /// 預設值:《span class="pagetext"》《strong》總共《/strong》:{0} 條 《strong》當前《/strong》:{1}/{2}《/span》 /// </summary> public string SetTextFormat { get; set; }   public PageString() { SetIsEnglish = false; SetIsShowText = true; SetTextFormat = "<span class="pagetext"><strong>總共</strong>:{0} 條 <strong>當前</strong>:{1}/{2}</span> "; SetClassName = "pagination"; SetPageIndexName = "pageIndex"; SetIsAjax = false; }   /*免費的樣式 .pagination .click {cursor:pointer} .pagination a{text-decoration: none;border: 1px solid #AAE;color: #15B;font-size: 13px;border-radius: 2px;} .pagination span{ color:#666;font-size:13px;display: inline-block;border: 1px solid #ccc;padding: 0.2em 0.6em;} .pagination span.pagetext{ border:none} .pagination a:hover{background: #26B;color: #fff;} .pagination a{display: inline-block;padding: 0.2em 0.6em;} .pagination .page_current{background: #26B;color: #fff;border: 1px solid #AAE;margin-right: 5px;} .pagination{margin-top: 20px;} .pagination .current.prev, .pagination .current.next{color: #999;border-color: #999;background: #fff;} * */   /// <summary> /// 分頁演算法<一>共20頁 首頁 上一頁 1 2 3 4 5 6 7 8 9 10 下一頁 末頁 /// </summary> /// <param name="total">總記錄數</param> /// <param name="pageSize">每頁記錄數</param> /// <param name="pageIndex">當前頁數</param> /// <param name="query_string">Url參數</param> /// <returns></returns> public string ToString(int total, int pageSize, int pageIndex, string query_string) {   int allpage = 0; int next = 0; int pre = 0; int startcount = 0; int endcount = 0; StringBuilder pagestr = new StringBuilder(); pageIndex = pageIndex == 0 ? 1 : pageIndex; pagestr.AppendFormat("<div class="{0}" >", SetClassName); if (pageIndex < 1) { pageIndex = 1; } //計算總頁數 if (pageSize != 0) { allpage = (total / pageSize); allpage = ((total % pageSize) != 0 ? allpage + 1 : allpage); allpage = (allpage == 0 ? 1 : allpage); } next = pageIndex + 1; pre = pageIndex - 1; startcount = (pageIndex + 5) > allpage ? allpage - 9 : pageIndex - 4;//中間頁起始序號 //中間頁終止序號 endcount = pageIndex < 5 ? 10 : pageIndex + 5; if (startcount < 1) { startcount = 1; } //為了避免輸出的時候產生負數,設定如果小於1就從序號1開始 if (allpage < endcount) { endcount = allpage; }//頁碼+5的可能性就會產生最終輸出序號大於總頁碼,那麼就要將其控制在頁碼數之內   bool isFirst = pageIndex == 1; bool isLast = pageIndex == allpage;   if (SetIsShowText) pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage);   if (isFirst) { pagestr.Append("<span>首頁</span> <span>上一頁</span>"); } else { pagestr.AppendFormat("<a href="{0}pageIndex=1">首頁</a> <a href="{0}pageIndex={1}">上一頁</a>", query_string, pre); } //中間頁處理,這個增加時間複雜度,減小空間複雜度 for (int i = startcount; i <= endcount; i++) { bool isCurent = pageIndex == i; if (isCurent) { pagestr.Append(" <a class="page_current">" + i + "</a>"); } else { pagestr.Append(" <a href="" + query_string + "pageIndex=" + i + "">" + i + "</a>"); }   } if (isLast) { pagestr.Append("<span>下一頁</span> <span>末頁</span>"); } else { pagestr.Append(" <a href="" + query_string + "pageIndex=" + next + "">下一頁</a> <a href="" + query_string + "pageIndex=" + allpage + "">末頁</a>"); } pagestr.AppendFormat("</div>"); return ConversionData(pagestr.ToString()); }   private string ConversionData(string page) { if (SetIsEnglish) { page= page.Replace("上一頁", "Previous").Replace("下一頁", "Next").Replace("總共", "total").Replace("當前", "Current").Replace("條", "records").Replace("首頁", "First").Replace("末頁", "Last"); } if (SetIsAjax) { var matches = Regex.Matches(page, @"href="".*?""",RegexOptions.Singleline); if (matches != null && matches.Count > 0) { foreach (Match m in matches) { page = page.Replace(m.Value, string.Format("class="click" onclick="ajaxPage('{0}')"", Regex.Match(m.Value, string.Format(@"{0}=(d+)", SetPageIndexName)).Groups[1].Value)); } } } return page;   }   }   }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.