نظرًا لأن وظيفة الترحيل التي تأتي مع .net جامدة للغاية وغير قابلة للتخصيص بشكل كبير، فلا يمكنها تلبية الاحتياجات، فقد أمضيت أكثر من أسبوع في كتابة
ميزة التحكم في ترحيل الصفحات .net:
1. دعم datagrid وdatalist وأنواع أخرى من عناصر التحكم في عرض البيانات من الناحية النظرية، طالما أن هناك عنصر تحكم في مصدر البيانات، يمكن استخدامه
2. يدعم ترحيل صفحات عنوان url ويمكن البحث في كل صفحة في ترحيل صفحات عنوان url بواسطة محركات البحث، ويدعم إعادة كتابة عنوان url.
3. يمكن تخصيص أسلوب التحكم
4. الحزمة كاملة إذا كنت قد استخدمت البرنامج، فما عليك سوى كتابة سطر واحد من الكود
1 /************************. **************************************************************************************************************************************************************
2 ** اسم الملف: Pager.cs
3 ** المؤسس: يانغ شيانغ وو
4 ** التاريخ: 27 يوليو 2005
5 ** تم التعديل بواسطة:
6** التاريخ:
7 ** الوصف:
8**
9 **---------------------------------------------- -- ------------------
10*************************************************** ***** *******************/
11
12 باستخدام النظام؛
13 باستخدام System.Web.UI.WebControls؛
14 باستخدام System.Web.UI.HtmlControls؛
15 باستخدام System.Web؛
16 باستخدام System.Web.UI؛
17 باستخدام System.Text.RegularExpressions؛
18
19 مساحة الاسم MyCompany.Controls
20 {
21 /// <الملخص>
22 /// التحكم في الترحيل
23 /// </الملخص>
24 جهاز النداء العام: التسمية، INamingContainer
25 {
26 #متغيرات أعضاء المنطقة ومنشئيها
27 HttpContext context = HttpContext.Current;
28 تسمية countLabel؛
29 زر الارتباط التشعبي السابق؛
30 الرابط التشعبي التالي؛
31 الرابط التشعبي الزر الأول؛
32 الارتباط التشعبي الزر الأخير؛
33 HyperLink[] ترحيل الصفحاتLinkButtons;
34
35 تجاوز عام لعناصر التحكم في مجموعة التحكم
36 {
37 الحصول على
38 {
39 EnsureChildControls();
40 قاعدة عودة. الضوابط؛
41 }
42 }
43
44 تجاوز محمي باطل CreateChildControls()
45 {
46 Controls.Clear();
47
48 AddCountLabel();
49
50 AddPageButtons();
51
52 AddPreviousNextHyperLinks();
53
54 AddFirstLastHyperLinks();
55 }
56 #المنطقة
57
58 #طريقة عرض المنطقة
59 عرض باطلة للتجاوز المحمي (كاتب HtmlTextWriter)
60 {
61 // لن يتم عرض أي عنصر تحكم عندما يكون إجمالي عدد الصفحات المعدلة أقل من أو يساوي 1
62 // int TotalPages = CalculateTotalPages();
63 //
64 // إذا (مجموع الصفحات <= 1)
65 // عودة؛
66
67 AddAttributesToRender(writer);
68
69 الكاتب.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass, false);
70
71 RenderCountLabel(writer);
72
73 رندرفيرست(كاتب);
74
75 RenderPrevious(writer);
76
77 RenderPagingButtons(writer);
78
79 RenderNext(writer);
80
81 RenderLast(writer);
82}
83
84 باطل RenderCountLabel (كاتب HtmlTextWriter)
85 {
86 countLabel.RenderControl(writer);
87
88 LiteralControl l = new LiteralControl(" ");
89 l.RenderControl(writer);
90}
91
92 باطل RenderFirst (كاتب HtmlTextWriter)
93 {
94 firstButton.RenderControl(writer);
95
96 LiteralControl l = new LiteralControl(" ");
97 l.RenderControl(writer);
98 }
99
100 باطل RenderLast (كاتب HtmlTextWriter)
101 {
102 lastButton.RenderControl(writer);
103
104 LiteralControl l = new LiteralControl(" ");
105 l.RenderControl(writer);
106 }
107
108 باطل RenderPrevious (كاتب HtmlTextWriter)
109 {
110 PreviousButton.RenderControl(writer);
111
112 LiteralControl l = new LiteralControl(" ");
113 l.RenderControl(writer);
114 }
115
116 باطل RenderNext (كاتب HtmlTextWriter)
117 {
118 nextButton.RenderControl(writer);
119
120 LiteralControl l = new LiteralControl(" ");
121 l.RenderControl(writer);
122 }
123
124 RenderButtonRange باطل خاص (int start، int end، كاتب HtmlTextWriter)
125 {
126 لـ (int i = start; i < end; i++)
127 {
128 إذا (مؤشر الصفحات == ط)
129 {
130 حرفي l = حرفي جديد();
131 l.Text = "<font color =red>" + (i + 1).ToString() + "</font>";
132
133 l.RenderControl(writer);
134}
135 أخرى
136 {
137 ترحيل الصفحاتLinkButtons[i].RenderControl(writer);
138 }
139 إذا (ط < (النهاية - 1))
140 كاتب.كتابة(" ");
141 }
142
143 LiteralControl l1 = new LiteralControl(" ");
144 l1.RenderControl(writer);
145 }
146
147 زر RenderPagingButtons الخاص (كاتب HtmlTextWriter)
148 {
149 عدد الصفحات الإجمالي؛
150
151 TotalPages = CalculateTotalPages();
152
153 إذا (إجمالي الصفحات <= 10)
154 {
155 RenderButtonRange(0, TotalPages,writer);
156 }
157 آخر
158 {
159 int LowerBound = (PageIndex - 4);
160 int UpperBount = (PageIndex + 6);
161
162 إذا (الحد الأدنى <= 0)
163 الحد الأدنى = 0;
164
165 إذا (مؤشر الصفحات <= 4)
166 RenderButtonRange(0, 10, كاتب);
167
168 آخر إذا (PageIndex < (totalPages - 5))
169 RenderButtonRange(lowerBound, (PageIndex + 6),writer);
170
171 آخر إذا (PageIndex >= (totalPages - 5))
172 RenderButtonRange((totalPages - 10), TotalPages,writer);
173}
174 }
175
176 #المنطقة
177
178 #طريقة شجرة التحكم بالمنطقة
179 /// <الملخص>
180 /// علامة المعلومات
181 /// </الملخص>
182 باطلة AddCountLabel()
183 {
184 كونت لابيل = تسمية جديدة();
185 countLabel.ID = "countLabel";
186 countLabel.Text = string.Format(text, CalculateTotalPages().ToString("n0"));
187
188 Controls.Add(countLabel);
189 }
190
191 AddPageButtons () باطلة خاصة
192 {
193 pagingLinkButtons = new HyperLink[CalculateTotalPages()];
194
195 لـ (int i = 0; i <pagingLinkButtons.Length; i++)
196 {
197.pageLinkButtons[i] = new HyperLink();
198 ترحيل الصفحاتLinkButtons[i].EnableViewState = false;
199 ترحيل الصفحاتLinkButtons[i].Text = (i + 1).ToString();
200 ترحيل صفحاتLinkButtons[i].ID = i.ToString();
201 ترحيل الصفحاتLinkButtons[i].CssClass = linkCss;
202 pagingLinkButtons[i].NavigateUrl = GetHrefString(i);
203
204 Controls.Add(pagingLinkButtons[i]);
205 }
206 }
207
208 /// <الملخص>
209 /// الصفحة الرئيسية الصفحة الأخيرة
210 /// </summary>
211 باطلة AddFirstLastHyperLinks()
212 {
213 firstButton = new HyperLink();
214 firstButton.ID = "الأولى";
215 firstButton.Text = "الصفحة الرئيسية";
216 إذا(PageIndex != 0 && CalculateTotalPages() > 0)
217 {
218 firstButton.NavigateUrl = GetHrefString(0);
219 }
220 أخرى
221 {
222 firstButton.Enabled = false;
223 }
224
225 Controls.Add(firstButton);
226
227 lastButton = new HyperLink();
228 lastButton.ID = "الأخير";
229 lastButton.Text = "الصفحة الأخيرة";
230 إذا(PageIndex != CalculateTotalPages() - 1)
231 {
232 lastButton.NavigateUrl = GetHrefString(CalculateTotalPages() - 1);
233 }
234 آخر
235 {
236 lastButton.Enabled = false;
237 }
238 Controls.Add(lastButton);
239 }
240
241 /// <الملخص>
242 /// الصفحة السابقة الصفحة التالية
243 /// </summary>
244 باطلة AddPreviousNextHyperLinks()
245 {
246 PreviousButton = new HyperLink();
247 PreviousButton.ID = "السابق";
248 PreviousButton.Text = "الصفحة السابقة";
249 إذا (السابق)
250 {
251 PreviousButton.NavigateUrl = GetHrefString(PageIndex - 1);
252 }
253 آخر
254 {
255 زر سابق.Enabled = خطأ؛
256 }
257 Controls.Add(previousButton);
258
259 nextButton = new HyperLink();
260 nextButton.ID = "التالي";
261 nextButton.Text = "الصفحة التالية";
262 إذا (التالي)
263 {
264 nextButton.NavigateUrl = GetHrefString(PageIndex + 1);
265 }
266 أخرى
267 {
268 nextButton.Enabled = false;
269 }
270 Controls.Add(nextButton);
271 }
272 #المنطقة
273
274 #منطقة عقارات خاصة
275 منطق خاص سابق
276 {
277 الحصول على
278 {
279 إذا (مؤشر الصفحات > 0)
280 عودة صحيحة؛
281
282 إرجاع كاذب؛
283}
284 }
285
286 منطقي خاص HasNext
287 {
288 الحصول على
289 {
290 إذا (PageIndex + 1 < CalculateTotalPages() )
291 عودة صحيحة؛
292
293 إرجاع كاذب؛
294 }
295 }
296 #المنطقة
297
298 #طرق مساعد المنطقة والخصائص العامة
299
300 /// <الملخص>
301 /// احصل على سلسلة الارتباط التشعبي لزر التنقل في الترحيل
302 /// </summary>
303 /// <param name="pageIndex">فهرس الصفحة المقابل لزر الترحيل</param>
304 /// <returns>سلسلة الارتباط التشعبي لزر التنقل بين الصفحات</returns>
305 سلسلة خاصة GetHrefString (int pageIndex)
306 {
307 سلسلة url = Page.Request.RawUrl؛
308
309 إذا (Regex.IsMatch(url, @"(d+).shtml"، RegexOptions.IgnoreCase))
310 {
311 url = Regex.Replace(url, @"(d+).shtml",pageIndex + ".shtml");
312 }
313
314 إذا (Regex.IsMatch(url, @"PageIndex=(d+)"، RegexOptions.IgnoreCase))
315 {
316 url = Regex.Replace(url, @"PageIndex=(d+)", "PageIndex=" + pageIndex.ToString());
317 }
318
319 إرجاع Page.Server.UrlPathEncode(url);
320 }
321
322 الباحث العام CalculateTotalPages()
323 {
324 عدد الصفحات المتاحة؛
325
326 إذا (إجمالي السجلات == 0)
327 العودة 0؛
328
329 TotalPagesAvailable = TotalRecords / PageSize;
330
331 إذا ((إجمالي السجلات % حجم الصفحة) > 0)
332 مجموع الصفحات المتاحة++;
333
334 إرجاع إجمالي الصفحات المتاحة؛
335 }
336
337 /// <الملخص>
338 /// الصفحة الحالية
339 /// </summary>
340 مؤشر الصفحات العام
341 {
342 الحصول على
343 {
344 إنت _pageIndex = 0;
345
346 إذا ((!Page.IsPostBack) && (context.PageIndex > 0))
347 _pageIndex = context.PageIndex;
348 آخر
349 _pageIndex = Convert.ToInt32(ViewState["PageIndex"]);
350
351 إذا (_pageIndex <0)
352 العودة 0؛
353 أخرى
354 {
355 إذا (_pageIndex > حساب إجمالي الصفحات()-1)
356 إرجاع حساب إجمالي الصفحات ()-1؛
357 أخرى
358 إرجاع _pageIndex;
359 }
360 }
361 مجموعة
362 {
363 ViewState["PageIndex"] = value;
364 }
365 }
366
367 /// <الملخص>
368 ///عدد السجلات في كل صفحة
369 /// </summary>
370 حجم الصفحة العام
371 {
372 الحصول على
373 {
374 int pageSize = Convert.ToInt32(ViewState["PageSize"]);
375
376 إذا (حجم الصفحة == 0)
377 {
378 عودة 10؛
379 }
380
381 حجم صفحة الإرجاع؛
382 }
383 مجموعة
384 {
385 ViewState["PageSize"] = value;
386 }
387
388 }
389
390 /// <الملخص>
391 ///العدد الإجمالي للسجلات
392 /// </summary>
393 إجمالي السجلات العامة
394 {
395 الحصول على
396 {
397 return Convert.ToInt32(ViewState["TotalRecords"]);
398 }
399 مجموعة
400 {
401 ViewState["TotalRecords"] = value;
402 }
403 }
404
405 نص سلسلة خاصة = "إجمالي {0} صفحة"؛
406
407 سلسلة خاصة linkCss = "";
408 /// <الملخص>
409 /// نمط الارتباط
410 /// </summary>
411 سلسلة عامة LinkCss
412 {
413 الحصول على { إرجاع رابط Css }
414 مجموعة { linkCss = القيمة؛}
415 }
416
417 سلسلة خاصة textCss = "";
418 /// <الملخص>
419 /// نمط النص
420 /// </summary>
421 سلسلة عامة TextCss
422 {
423 الحصول على { عودة textCss }
424 مجموعة { textCss = القيمة؛}
425 }
426
427 سلسلة نصية عامة
428 {
429 الحصول على
430 {
431 إرجاع النص؛
432 }
433 مجموعة
434 {
435 النص = القيمة؛
436 }
437 }
438
439 #المنطقة
440 }
441 }
442
فقط اكتب هذا على الصفحة:
1 <%@ لغة التحكم = "c#" %>
2 <%@ تسجيل TagPrefix = "Anchor" Namespace = "MyCompany.Controls" Assembly = "MyCompany.Controls" %>
3 <ANCHOR:PAGER id="Pager1" runat="server"></ANCHOR:PAGER>
4