paging control code
pageSize control
[ToolboxData("<{0}:PagesizeControl runat=server></{0}:PagesizeControl>")]
public class PagesizeControl : WebControl
{
private delegate string PagesizeHtmlHandle(int[] list, int current,GetItemHtmlHandle itemHandle);
private delegate string GetItemHtmlHandle(int value, int current);
protected override void RenderContents(HtmlTextWriter output)
{
Build(output,GetHtml,GetItemHtml);
}
![]()
public int Current
{
get
{
if (DesignMode)
{
return 50;
}
string s = Page.Request[Name];
if (s == null)
{
return 50;
}
else
{
return int.Parse(s);
}
}
}
![]()
private const string Name = "pagesize";
![]()
private void Build(HtmlTextWriter output,PagesizeHtmlHandle handle,GetItemHtmlHandle itemHandle)
{
int[] list = new int[] {20,50,100};
output.Write(handle(list,Current,itemHandle));
}
![]()
private string GetHtml(int[] list, int current,GetItemHtmlHandle itemHandle)
{
string temp = "<span>show ";
for (int i = 0; i < list.Length; i++)
{
temp += itemHandle(list[i], current);
}
temp += "results</span>";
return temp;
}
public NameValueCollection ExtendProperty;
private string GetItemHtml(int value, int current)
{
if (DesignMode)
{
return value.ToString() +" ";
}
NameValueCollection list = new NameValueCollection(Page.Request.QueryString);
if (list[Name] == null)
{
list.Add(Name, value.ToString());
}
else
{
list[Name] = value.ToString();
}
string key;
if (ExtendProperty != null)
{
for (int i = 0; i < ExtendProperty.Count; i++)
{
key = ExtendProperty.Keys[i];
if (list[key] == null)
{
list.Add(key, ExtendProperty[key]);
}
else
{
list[key] = ExtendProperty[key];
}
}
}
string temp;
if (value == current)
{
temp = "<a href=\"{0}\" class=\"selected\">{1}</a> ";
}
else
{
temp = "<a href=\"{0}\">{1}</a> ";
}
![]()
string url = Page.Request.Path + "?";
for (int i = 0; i < list.Count; i++)
{
url += list.Keys[i] + "=" + HttpUtility.UrlEncode(list[i]);
if (i != list.Count - 1)
{
url += "&";
}
}
return string.Format(temp, url, value);
}
}
On Make url function , You can replace some code
1
[ToolboxData("<{0}:Paging runat=server></{0}:Paging>")]
2
public class Paging : WebControl
3
{
4
public int Records
5
{
6
get
7
{
8
object o = this.ViewState["Records"];
9
if (o == null)
10
{
11
return 1;
12
}
13
else
14
{
15
return (int)o;
16
}
17
}
18
set
19
{
20
this.ViewState["Records"] = value;
21
}
22
}
23![]()
24
public int PageSize
25
{
26
get
27
{
28
object o = this.ViewState["PageSize"];
29
if (o == null)
30
{
31
return 1;
32
}
33
else
34
{
35
return (int)o;
36
}
37
}
38
set
39
{
40![]()
41
this.ViewState["PageSize"] = value;
42
}
43
}
44![]()
45
46
public int ToPage
47
{
48
get
49
{
50
if (DesignMode)
51
{
52
return 1;
53
}
54
string s = Page.Request[PageName];
55
if (s == null)
56
{
57
return 1;
58
}
59
else
60
{
61
return int.Parse(s);
62
}
63
}
64
}
65![]()
66
public int PageCount;
67![]()
68
public string PageName = "Topage";
69![]()
70
71
protected override void RenderContents(HtmlTextWriter output)
72
{
73
Build(output,CalculatePageCount);
74
}
75![]()
76
private int CalculatePageCount(int records,int pageSize)
77
{
78
int mod = records % pageSize;
79
if (mod > 0)
80
{
81
return (records / pageSize + 1);
82
}
83
else
84
{
85
return (records / pageSize);
86
}
87
}
88![]()
89
public delegate int CalculatePageCountHandel(int records, int pageSize);
90![]()
91
private void Build(HtmlTextWriter output,CalculatePageCountHandel kk)
92
{
93
PageCount = kk(Records,PageSize);
94
string prev = "";
95
string next = "";
96
97
if (ToPage == 1)
98
{
99
prev = "prev ";
100
}
101
else
102
{
103
prev = string.Format("<a href=\"{0}\">prev</a> ", GetUrl(ToPage - 1));
104
}
105
if (ToPage >= PageCount)
106
{
107
next = "next";
108
}
109
else
110
{
111
next = string.Format("<a href=\"{0}\">next</a> ", GetUrl(ToPage + 1));
112
}
113
string temp = "";
114
int previousPagesCount = 3;
115
for (int i = ToPage - previousPagesCount; i < ToPage; i++)
116
{
117
if (i > 0)
118
{
119
temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);
120
}
121
}
122
temp += string.Format("<a href=\"{0}\" class=\"selected\">{1}</a> ", GetUrl(ToPage), ToPage);
123
int nextPagesCount = 3;
124
for (int i = ToPage + 1; i <= PageCount && i <= ToPage + nextPagesCount; i++)
125
{
126![]()
127
temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);
128
}
129
if (ToPage + 1 + 4 < PageCount)
130
{
131
temp += "
";
132
}
133
temp = "<span>" +prev + temp + next+"</span>";
134![]()
135![]()
136
output.Write(temp);
137
}
138
public NameValueCollection ExtendProperty;
139
private string GetUrl(int number)
140
{
141
if (this.DesignMode)
142
{
143
return string.Empty;
144
}
145
NameValueCollection list = new NameValueCollection(Page.Request.QueryString);
146
if (list[PageName] == null)
147
{
148
list.Add(PageName, number.ToString());
149
}
150
else
151
{
152
list[PageName] = number.ToString();
153
}
154
string key;
155
if (ExtendProperty != null)
156
{
157
for (int i = 0; i < ExtendProperty.Count; i++)
158
{
159
key = ExtendProperty.Keys[i];
160
if (list[key] == null)
161
{
162
list.Add(key, ExtendProperty[key]);
163
}
164
else
165
{
166
list[key] = ExtendProperty[key];
167
}
168
}
169
}
170
string url = Page.Request.Path+"?";
171
for (int i = 0; i < list.Count; i++)
172
{
173
url += list.Keys[i] + "=" +HttpUtility.UrlEncode(list[i]);
174
if (i != list.Count - 1)
175
{
176
url += "&";
177
}
178
}
179
return url;
180
181
}
182
}
[ToolboxData("<{0}:Paging runat=server></{0}:Paging>")]2
public class Paging : WebControl3
{4
public int Records5
{6
get7
{8
object o = this.ViewState["Records"];9
if (o == null)10
{11
return 1;12
}13
else14
{15
return (int)o;16
}17
}18
set19
{20
this.ViewState["Records"] = value;21
}22
}23

24
public int PageSize25
{26
get27
{28
object o = this.ViewState["PageSize"];29
if (o == null)30
{31
return 1;32
}33
else34
{35
return (int)o;36
}37
}38
set39
{40

41
this.ViewState["PageSize"] = value;42
}43
}44

45
46
public int ToPage47
{48
get49
{50
if (DesignMode)51
{52
return 1;53
}54
string s = Page.Request[PageName];55
if (s == null)56
{57
return 1;58
}59
else60
{61
return int.Parse(s);62
}63
}64
}65

66
public int PageCount;67

68
public string PageName = "Topage";69

70
71
protected override void RenderContents(HtmlTextWriter output)72
{73
Build(output,CalculatePageCount);74
}75

76
private int CalculatePageCount(int records,int pageSize)77
{78
int mod = records % pageSize;79
if (mod > 0)80
{81
return (records / pageSize + 1);82
}83
else84
{85
return (records / pageSize);86
}87
}88

89
public delegate int CalculatePageCountHandel(int records, int pageSize);90

91
private void Build(HtmlTextWriter output,CalculatePageCountHandel kk)92
{93
PageCount = kk(Records,PageSize);94
string prev = "";95
string next = "";96
97
if (ToPage == 1)98
{99
prev = "prev ";100
}101
else102
{103
prev = string.Format("<a href=\"{0}\">prev</a> ", GetUrl(ToPage - 1));104
}105
if (ToPage >= PageCount)106
{107
next = "next";108
}109
else110
{111
next = string.Format("<a href=\"{0}\">next</a> ", GetUrl(ToPage + 1));112
}113
string temp = "";114
int previousPagesCount = 3;115
for (int i = ToPage - previousPagesCount; i < ToPage; i++)116
{117
if (i > 0)118
{119
temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);120
}121
}122
temp += string.Format("<a href=\"{0}\" class=\"selected\">{1}</a> ", GetUrl(ToPage), ToPage);123
int nextPagesCount = 3;124
for (int i = ToPage + 1; i <= PageCount && i <= ToPage + nextPagesCount; i++)125
{126

127
temp += string.Format("<a href=\"{0}\">{1}</a> ", GetUrl(i), i);128
}129
if (ToPage + 1 + 4 < PageCount)130
{131
temp += "
";132
}133
temp = "<span>" +prev + temp + next+"</span>";134

135

136
output.Write(temp);137
}138
public NameValueCollection ExtendProperty;139
private string GetUrl(int number)140
{141
if (this.DesignMode)142
{143
return string.Empty;144
}145
NameValueCollection list = new NameValueCollection(Page.Request.QueryString);146
if (list[PageName] == null)147
{148
list.Add(PageName, number.ToString());149
}150
else151
{152
list[PageName] = number.ToString();153
}154
string key;155
if (ExtendProperty != null)156
{157
for (int i = 0; i < ExtendProperty.Count; i++)158
{159
key = ExtendProperty.Keys[i];160
if (list[key] == null)161
{162
list.Add(key, ExtendProperty[key]);163
}164
else165
{166
list[key] = ExtendProperty[key];167
}168
}169
}170
string url = Page.Request.Path+"?";171
for (int i = 0; i < list.Count; i++)172
{173
url += list.Keys[i] + "=" +HttpUtility.UrlEncode(list[i]);174
if (i != list.Count - 1)175
{176
url += "&";177
}178
}179
return url;180
181
}182
}pageSize control
[ToolboxData("<{0}:PagesizeControl runat=server></{0}:PagesizeControl>")]
public class PagesizeControl : WebControl
{
private delegate string PagesizeHtmlHandle(int[] list, int current,GetItemHtmlHandle itemHandle);
private delegate string GetItemHtmlHandle(int value, int current);
protected override void RenderContents(HtmlTextWriter output)
{
Build(output,GetHtml,GetItemHtml);
}
public int Current
{
get
{
if (DesignMode)
{
return 50;
}
string s = Page.Request[Name];
if (s == null)
{
return 50;
}
else
{
return int.Parse(s);
}
}
}
private const string Name = "pagesize";
private void Build(HtmlTextWriter output,PagesizeHtmlHandle handle,GetItemHtmlHandle itemHandle)
{
int[] list = new int[] {20,50,100};
output.Write(handle(list,Current,itemHandle));
}
private string GetHtml(int[] list, int current,GetItemHtmlHandle itemHandle)
{
string temp = "<span>show ";
for (int i = 0; i < list.Length; i++)
{
temp += itemHandle(list[i], current);
}
temp += "results</span>";
return temp;
}
public NameValueCollection ExtendProperty;
private string GetItemHtml(int value, int current)
{
if (DesignMode)
{
return value.ToString() +" ";
}
NameValueCollection list = new NameValueCollection(Page.Request.QueryString);
if (list[Name] == null)
{
list.Add(Name, value.ToString());
}
else
{
list[Name] = value.ToString();
}
string key;
if (ExtendProperty != null)
{
for (int i = 0; i < ExtendProperty.Count; i++)
{
key = ExtendProperty.Keys[i];
if (list[key] == null)
{
list.Add(key, ExtendProperty[key]);
}
else
{
list[key] = ExtendProperty[key];
}
}
}
string temp;
if (value == current)
{
temp = "<a href=\"{0}\" class=\"selected\">{1}</a> ";
}
else
{
temp = "<a href=\"{0}\">{1}</a> ";
}
string url = Page.Request.Path + "?";
for (int i = 0; i < list.Count; i++)
{
url += list.Keys[i] + "=" + HttpUtility.UrlEncode(list[i]);
if (i != list.Count - 1)
{
url += "&";
}
}
return string.Format(temp, url, value);
}
}On Make url function , You can replace some code
浙公网安备 33010602011771号