在做網(wǎng)站沒(méi)用 JS UI控件時(shí) 很實(shí)用
用法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var ps= new PageString(); /*可選參數(shù)*/ ps.SetIsEnglish = true ; // 是否是英文 (默認(rèn):false) ps.SetIsShowText = true ; //是否顯示分頁(yè)文字 (默認(rèn):true) //ps.TextFormat="" (默認(rèn)值:《span class=\"pagetext\"》《strong》總共《/strong》:{0} 條 《strong》當(dāng)前《/strong》:{1}/{2}《/span》) //ps.SetPageIndexName Request["pageIndex"](默認(rèn)值:"pageIndex") ps.SetIsAjax = false ; // (默認(rèn)值:"false") /*函數(shù)參數(shù)*/ 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> /// ** 描述:分頁(yè)類(lèi) /// ** 創(chuàng)始時(shí)間:2015-5-29 /// ** 修改時(shí)間:- /// ** 作者:sunkaixuan public class PageString { /// <summary> /// 是否是英文 (默認(rèn):false) /// </summary> public bool SetIsEnglish { get ; set ; } /// <summary> /// 是否顯示分頁(yè)文字(默認(rèn):true) /// </summary> public bool SetIsShowText { get ; set ; } /// <summary> /// 樣式 (默認(rèn):"pagination") /// </summary> public string SetClassName { get ; set ; } /// <summary> /// 分頁(yè)參數(shù)名 (默認(rèn):"pageIndex") /// </summary> public string SetPageIndexName { get ; set ; } /// <summary> /// 是否是異步 同步 href='' 異步 onclick=ajaxPage() (默認(rèn):false) /// </summary> public bool SetIsAjax { get ; set ; } /// <summary> /// 自定義文字 /// string.Format("{0}{1}{2}","總記錄數(shù)","當(dāng)前頁(yè)數(shù)","總頁(yè)數(shù)") /// 默認(rèn)值:《span class=\"pagetext\"》《strong》總共《/strong》:{0} 條 《strong》當(dāng)前《/strong》:{1}/{2}《/span》 /// </summary> public string SetTextFormat { get ; set ; } public PageString() { SetIsEnglish = false ; SetIsShowText = true ; SetTextFormat = "<span class=\"pagetext\"><strong>總共</strong>:{0} 條 <strong>當(dāng)前</strong>:{1}/{2}</span> " ; SetClassName = "pagination" ; SetPageIndexName = "pageIndex" ; SetIsAjax = false ; } /*免費(fèi)的樣式 .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> /// 分頁(yè)算法<一>共20頁(yè) 首頁(yè) 上一頁(yè) 1 2 3 4 5 6 7 8 9 10 下一頁(yè) 末頁(yè) /// </summary> /// <param name="total">總記錄數(shù)</param> /// <param name="pageSize">每頁(yè)記錄數(shù)</param> /// <param name="pageIndex">當(dāng)前頁(yè)數(shù)</param> /// <param name="query_string">Url參數(shù)</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; } //計(jì)算總頁(yè)數(shù) 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; //中間頁(yè)起始序號(hào) //中間頁(yè)終止序號(hào) endcount = pageIndex < 5 ? 10 : pageIndex + 5; if (startcount < 1) { startcount = 1; } //為了避免輸出的時(shí)候產(chǎn)生負(fù)數(shù),設(shè)置如果小于1就從序號(hào)1開(kāi)始 if (allpage < endcount) { endcount = allpage; } //頁(yè)碼+5的可能性就會(huì)產(chǎn)生最終輸出序號(hào)大于總頁(yè)碼,那么就要將其控制在頁(yè)碼數(shù)之內(nèi) bool isFirst = pageIndex == 1; bool isLast = pageIndex == allpage; if (SetIsShowText) pagestr.AppendFormat(SetTextFormat, total, pageIndex, allpage); if (isFirst) { pagestr.Append( "<span>首頁(yè)</span> <span>上一頁(yè)</span>" ); } else { pagestr.AppendFormat( "<a href=\"{0}pageIndex=1\">首頁(yè)</a> <a href=\"{0}pageIndex={1}\">上一頁(yè)</a>" , query_string, pre); } //中間頁(yè)處理,這個(gè)增加時(shí)間復(fù)雜度,減小空間復(fù)雜度 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>下一頁(yè)</span> <span>末頁(yè)</span>" ); } else { pagestr.Append( " <a href=\"" + query_string + "pageIndex=" + next + "\">下一頁(yè)</a> <a href=\"" + query_string + "pageIndex=" + allpage + "\">末頁(yè)</a>" ); } pagestr.AppendFormat( "</div>" ); return ConversionData(pagestr.ToString()); } private string ConversionData( string page) { if (SetIsEnglish) { page= page.Replace( "上一頁(yè)" , "Previous" ).Replace( "下一頁(yè)" , "Next" ).Replace( "總共" , "total" ).Replace( "當(dāng)前" , "Current" ).Replace( "條" , "records" ).Replace( "首頁(yè)" , "First" ).Replace( "末頁(yè)" , "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; } } } |