java分頁控件,花兩個小時,做了個分頁控件

 2023-10-06 阅读 19 评论 0

摘要:一個簡單的分頁控件,內置4種顯示風格,主要是將AspNetForums的分頁跟一個朋友(小熊)的合一塊了,ANF的單調了點,小熊的吧,用起來有點麻煩,我人懶,就整一塊了.:) 內置四種風格,通過設置StyleName(BasePager,CoolPager,DiscuzPager,SmallPager)就行,不過要注意大小寫,CSS是從Assem

一個簡單的分頁控件,內置4種顯示風格,主要是將AspNetForums的分頁跟一個朋友(小熊)的合一塊了,ANF的單調了點,小熊的吧,用起來有點麻煩,我人懶,就整一塊了.:)
內置四種風格,通過設置StyleName(BasePager,CoolPager,DiscuzPager,SmallPager)就行,不過要注意大小寫,CSS是從Assembly里面取的.
下面是效果,

如果想定制一些更炫的效果,就將StyleName設置成其它的任意名字.自己寫CSS:
生成的HTML代碼如下:

<script type="text/javascript">
//<![CDATA[

java分頁控件,??????????????? function xiaokui_pager_go(){
???????????????? var n=event.srcElement;
???????????????? if(event.keyCode==13)
???????????????? {
????????????????? var strUrl=location.href.toLowerCase();
????????????????? strUrl=strUrl.replace(/(\&)?pageindex=\d+/gi,'');
????????????????? if(location.search=='')
??????????????????????????? strUrl=strUrl+'?pageindex='+n.value;
??????????????????????? else
??????????????????????????? strUrl=strUrl+'&pageindex='+n.value;
??????????????????????? strUrl=strUrl.replace('?&','?');
????????????????? location.href=strUrl;
??????????????????????? return false;
?????????????? }
??????????????? }//]]>
</script>
<div id="Pager1" class="SmallPager Left">
<span class="SmallPager_pre">
<a id="Pager1" class="" id="Prev" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=1">&lt;</a>
</span>
<span class="SmallPager_curr">1</span>
<span class="SmallPager_number"><a id="2" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=2">2</a></span>
<span class="SmallPager_number"><a id="3" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=3">3</a></span>
<span class="SmallPager_number"><a id="4" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=4">4</a></span>
<span class="SmallPager_number"><a id="5" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=5">5</a></span>
<span class="SmallPager_next"><a id="Next" href="http://localhost:2625/WebSite/Default.aspx?PageIndex=2">&gt;</a></span>
??? GO:<input name="txtCustom" type="text" id="txtCustom" οnkeydοwn="return xiaokui_pager_go();" οnkeyup="this.value=this.value.replace(/[^0-9]/gi,'');" />
</div>

都在Span里面包著.想怎么改,就怎么改.

代碼如下:

Code
??1using?System;
??2using?System.Collections.Generic;
??3using?System.ComponentModel;
??4using?System.Text;
??5using?System.Web;
??6using?System.Web.UI;
??7using?System.Web.UI.WebControls;
??8using?System.IO;
??9using?System.Reflection;
?10
?11namespace?Bqrm.Web.UI.WebControls
?12{
?13????對齊方式?enum#region?對齊方式?enum
?14????/**////?<summary>
?15????///?對齊方式
?16????///?</summary>

?17????public?enum?Align
?18????{
?19????????/**////?<summary>
?20????????///?左對齊
?21????????///?</summary>

?22????????Left?=?0,
?23????????/**////?<summary>
?24????????///?居中
?25????????///?</summary>

?26????????Center,
?27????????/**////?<summary>
?28????????///?右對齊
?29????????///?</summary>

?30????????Right
?31????}

?32????#endregion

?33????/**////?<summary>
?34????///?分頁顯示類
?35????///?</summary>

?36????[ToolboxData("<{0}:Pager?runat=server></{0}:Pager>")]
?37????public?class?Pager:WebControl
?38????{
?39
?40????????私有成員#region?私有成員
?41????????private?int?_PageIndex;
?42????????private?string?_StyleName;
?43????????private?Align?_Align;
?44????????private?StringBuilder?sbData?=?new?StringBuilder();
?45????????HyperLink?previousLink;
?46????????HyperLink?nextLink;
?47????????HyperLink?firstLink;
?48????????HyperLink?lastLink;
?49????????HyperLink[]?pagingHyperLinks;
?50????????TextBox?txtCustom;
?51????????private?string?preString?=?"<span?class=\"{0}_{1}\">";
?52????????private?string?lastString?=?"</span>";
?53????????private?string?currentPageString?=?"<span?class=\"{0}_curr\">{1}</span>";
?54????????private?bool?showTextBox?=?true;
?55????????#endregion

?56
?57????????構造函數#region?構造函數
?58????????/**////?<summary>
?59????????///?構造函數
?60????????///?</summary>

?61????????public?Pager()
?62????????{
?63????????????this._StyleName?=?"BasePager";
?64????????????this._Align?=?Align.Left;
?65????????}

?66????????#endregion

?67
?68????????????????bool?showCurrentPage?=?true;
?69????????/**////?<summary>
?70????????///?顯示當前頁統計信息.如:當前頁?1/10?共有1000條記錄
?71????????///?</summary>

?72????????public?bool?ShowCurrentPage
?73????????{
?74????????????get?{?return?showCurrentPage;?}
?75????????????set?{?showCurrentPage?=?value;?}
?76????????}

?77
?78????????string?firstPageText?=?"&lt;&lt;";
?79????????/**////?<summary>
?80????????///?首頁鏈接顯示的字符
?81????????///?</summary>

?82????????public?string?FirstPageText
?83????????{
?84????????????get?{?return?firstPageText;?}
?85????????????set?{?firstPageText?=?value;?}
?86????????}

?87
?88????????string?lastPageText?=?"&gt;&gt;";
?89????????/**////?<summary>
?90????????///?尾頁鏈接顯示的字符
?91????????///?</summary>

?92????????public?string?LastPageText
?93????????{
?94????????????get?{?return?lastPageText;?}
?95????????????set?{?lastPageText?=?value;?}
?96????????}

?97
?98????????string?previousPageText?=?"&lt;";
?99????????/**////?<summary>
100????????///?上一頁鏈接顯示的字符
101????????///?</summary>

102????????public?string?PreviousPageText
103????????{
104????????????get?{?return?previousPageText;?}
105????????????set?{?previousPageText?=?value;?}
106????????}

107
108????????string?nextPageText?=?"&gt;";
109????????/**////?<summary>
110????????///?下一頁鏈接顯示的字符.默認">"
111????????///?</summary>

112????????public?string?NextPageText
113????????{
114????????????get?{?return?nextPageText;?}
115????????????set?{?nextPageText?=?value;?}
116????????}

117
118????????/**////?<summary>
119????????///?當前頁碼
120????????///?</summary>

121????????public?virtual?int?PageIndex
122????????{
123????????????get
124????????????{
125????????????????HttpContext?context?=?HttpContext.Current;
126
127????????????????if?(Page.IsPostBack?&&?ViewState["PageIndex"]?!=?null)
128????????????????{
129????????????????????_PageIndex?=?(int)ViewState["PageIndex"];
130????????????????}

131????????????????else
132????????????????{
133????????????????????int.TryParse(Page.Request.QueryString["pageindex"],?out?this._PageIndex);
134????????????????????if?(this._PageIndex?==?0)
135????????????????????????this._PageIndex?=?1;
136????????????????}

137
138????????????????if?(_PageIndex?<?0)
139????????????????????return?0;
140????????????????else
141????????????????????return?_PageIndex;
142????????????}

143????????????set
144????????????{
145????????????????ViewState["PageIndex"]?=?value;
146????????????????_PageIndex?=?value;
147????????????}

148????????}

149
150????????/**////?<summary>
151????????///?一頁顯示的數據條數
152????????///?</summary>

153????????public?virtual?int?PageSize
154????????{
155????????????get
156????????????{
157????????????????int?pageSize?=?Convert.ToInt32(ViewState["PageSize"]);
158????????????????if?(pageSize?==?0)?return?10;
159????????????????return?pageSize;
160????????????}

161????????????set
162????????????{
163????????????????ViewState["PageSize"]?=?value;
164????????????}

165????????}

166
167???????/**////?<summary>
168???????///?總記錄數
169???????///?</summary>

170????????public?int?TotalRecord
171????????{
172????????????get
173????????????{
174????????????????return?Convert.ToInt32(ViewState["TotalRecords"]);
175????????????}

176????????????set
177????????????{
178????????????????ViewState["TotalRecords"]?=?value;
179????????????}

180????????}

181????????/**////?<summary>
182????????///?生成指定頁碼的鏈接地址
183????????///?</summary>
184????????///?<param?name="pageIndex"></param>
185????????///?<returns></returns>

186????????protected?virtual?string?CreatePagerURL(string?pageIndex)
187????????{
188????????????HttpContext?context?=?HttpContext.Current;
189????????????if?(context.Request.Url.AbsoluteUri.IndexOf("?")?==?-1)
190????????????{
191????????????????return?context.Request.Url.AbsoluteUri.ToString()?+?"?PageIndex="?+?pageIndex;
192????????????}

193????????????else
194????????????{
195????????????????if?(context.Request.Url.AbsoluteUri.ToLower().IndexOf("pageindex=")?==?-1)
196????????????????????return?context.Request.Url.AbsoluteUri.ToString()?+?"&PageIndex="?+?pageIndex;
197????????????????else
198????????????????{
199????????????????????return?System.Text.RegularExpressions.Regex.Replace(context.Request.Url.AbsoluteUri.ToLower().ToString(),?@"pageindex=(\d+\.?\d*|\.\d+)",?"PageIndex="?+?pageIndex);
200????????????????}

201????????????}

202????????}

203
204????????/**////?<summary>
205????????///?總頁數
206????????///?</summary>

207????????protected?int?TotalPage
208????????{
209????????????get?{?return?this.CalculateTotalPages();?}
210????????}

211????????/**////?<summary>
212????????///?樣式
213????????///?</summary>

214????????public?string?StyleName
215????????{
216????????????set?{?_StyleName?=?value;?}
217????????????get?{?return?_StyleName;?}
218????????}

219????????/**////?<summary>
220????????///?對齊方式
221????????///?</summary>

222????????public?Align?HAlign
223????????{
224????????????set?{?_Align?=?value;?}
225????????}

226????????/**////?<summary>
227????????///?顯示頁碼輸入框
228????????///?</summary>

229????????public?bool?ShowTextBox
230????????{
231????????????get?{?return?showTextBox;?}
232????????????set?{?showTextBox?=?value;?}
233????????}

234
235????????protected?override?void?CreateChildControls()
236????????{
237????????????Controls.Clear();
238????????????AddPageLinks();
239????????????AddPreviousNextLinks();
240????????????AddFirstLastLinks();
241????????????AddCustomPager();
242????????????Page.ClientScript.RegisterClientScriptBlock(this.GetType(),?"customPager",?GetScripts(),?true);
243????????}

244????????String?GetScripts()
245????????{
246????????????StringBuilder?sb?=?new?StringBuilder();
247????????????sb.Append(@"
248????????????????function?xiaokui_pager_go(){
249????????????????????var?n=event.srcElement;
250????????????????????if(event.keyCode==13)
251????????????????????{
252????????????????????????var?strUrl=location.href.toLowerCase();
253????????????????????????strUrl=strUrl.replace(/(\&)?pageindex=\d+/gi,'');
254????????????????????????if(location.search=='')
255????????????????????????????strUrl=strUrl+'?pageindex='+n.value;
256????????????????????????else
257????????????????????????????strUrl=strUrl+'&pageindex='+n.value;
258????????????????????????strUrl=strUrl.replace('?&','?');
259????????????????????????location.href=strUrl;
260????????????????????????return?false;
261?????????????????????}
262????????????????}");
263????????????return?sb.ToString();
264????????}

265
266????????void?AddCustomPager()
267????????{
268????????????txtCustom?=?new?TextBox();
269????????????txtCustom.ID?=?"txtCustom";
270????????????txtCustom.EnableViewState?=?false;
271????????????txtCustom.Attributes.Add("onkeydown",?"return?xiaokui_pager_go();");
272????????????txtCustom.Attributes.Add("onkeyup",?"this.value=this.value.replace(/[^0-9]/gi,'');");
273????????????Controls.Add(txtCustom);
274????????}

275????????protected?override?void?OnInit(EventArgs?e)
276????????{
277????????????base.OnInit(e);
278????????????AddStyle();
279????????}

280????????protected?override?void??OnLoad(EventArgs?e)
281????????{
282??????????????base.OnInit(e);
283?????????????if?(this.Context.Request["pagerstylename"]?!=?null)
284?????????????{
285?????????????????Assembly?executingAssembly?=?Assembly.GetExecutingAssembly();
286?????????????????Stream?stream?=?executingAssembly.GetManifestResourceStream("Bqrm."?+?StyleName?+?".css");
287?????????????????stream.Position?=?0L;
288?????????????????string?script?=?new?StreamReader(stream).ReadToEnd();
289?????????????????Page.Response.Write(script);
290?????????????????Page.Response.End();
291?????????????}

292????????}

293
294????????protected?void?AddStyle()
295????????{
296????????????string?str2?=?this.Context.Request.Url.ToString();
297????????????str2?=?str2?+?((str2.IndexOf("?")?>=?0)???"&"?:?"?");
298????????????string?s?=?StyleName.ToLower();
299????????????if?(s?==?"basepager"?||?s?==?"coolpager"?||?s?==?"discuzpager"?||?s?==?"smallpager")
300????????????{
301????????????????try
302????????????????{
303????????????????????Page.Header.Controls.Add(new?LiteralControl("<link?rel=\"stylesheet\"?href=\""?+?str2?+?"PagerStyleName="?+?StyleName?+?"\"?type=\"text/css\"?/>"));
304????????????????}

305????????????????catch
306????????????????{
307????????????????????Page.Response.Write("<link?rel=\"stylesheet\"?href=\""?+?str2?+?"PagerStyleName="?+?StyleName?+?"\"?type=\"text/css\"?/>");
308????????????????}

309????????????}

310????????}

311
312????????protected?override?void?Render(HtmlTextWriter?writer)?
313????????{
314????????????writer.Write("<div?id=\""?+?this.ClientID?+?"\"?class=\""?+?this._StyleName?+?"?"?+?this._Align?+?"\">");
315????????????int?totalPages?=?CalculateTotalPages();
316
317????????????if?(totalPages?<=?1)
318????????????????return;
319
320????????????if?(ShowCurrentPage)
321????????????????RenderCurrentPage(writer);
322
323????????????AddAttributesToRender(writer);
324
325????????????writer.AddAttribute(HtmlTextWriterAttribute.Class,?this.CssClass,?false);
326????????????RenderFirst(writer);
327
328????????????RenderPrevious(writer);
329????????????
330????????????RenderPagingButtons(writer);
331
332????????????RenderNext(writer);
333
334????????????RenderLast(writer);
335
336????????????RenderCustom(writer);
337
338????????????writer.Write("</div>");
339
340????????}

341????????void?RenderCustom(HtmlTextWriter?writer)
342????????{
343????????????writer.Write("????GO:");
344????????????txtCustom.RenderControl(writer);
345????????}

346
347????????void?RenderCurrentPage(HtmlTextWriter?writer)
348????????{
349????????????writer.Write(String.Format(preString,?StyleName,?"_total"));
350????????????writer.Write(string.Format(this.CurrentPageStringFormat,?this.PageIndex,?this.CalculateTotalPages(),?this.TotalRecord));
351????????????writer.Write(lastString);
352????????}

353
354????????void?RenderFirst(HtmlTextWriter?writer)?
355????????{
356????????????int?totalPages?=?CalculateTotalPages();
357
358????????????if?((PageIndex?>=?3)?&&?(totalPages?>?5))?
359????????????{
360????????????????writer.Write(String.Format(preString,this.StyleName,"first"));
361????????????????firstLink.RenderControl(writer);
362????????????????writer.Write(lastString);
363????????????}

364????????}

365
366????????void?RenderLast(HtmlTextWriter?writer)?
367????????{
368????????????int?totalPages?=?CalculateTotalPages();
369
370????????????if?(((PageIndex?+?3)?<?totalPages)?&&?(totalPages?>?5))?
371????????????{
372????????????????writer.Write(String.Format(preString,this.StyleName,"last"));
373????????????????lastLink.RenderControl(writer);
374????????????????writer.Write(lastString);
375????????????}

376????????}

377
378????????void?RenderPrevious(HtmlTextWriter?writer)?
379????????{
380????????????Literal?l;
381
382????????????if?(HasPrevious)?
383????????????{
384????????????????writer.Write(String.Format(preString,this.StyleName,"pre"));
385????????????????previousLink.RenderControl(writer);
386????????????????writer.Write(lastString);
387????????????}

388????????}

389
390????????void?RenderNext(HtmlTextWriter?writer)?
391????????{
392????????????if?(HasNext)?
393????????????{
394????????????????writer.Write(String.Format(preString,this.StyleName,"next"));
395????????????????nextLink.RenderControl(writer);
396????????????????writer.Write(lastString);
397????????????}

398????????}

399
400????????void?RenderButtonRange(int?start,?int?end,?HtmlTextWriter?writer)?
401????????{
402????????????for?(int?i?=?start;?i?<?end;?i++)?
403????????????{
404????????????????if?(PageIndex?==?i+1)?
405????????????????{
406????????????????????writer.Write(String.Format(currentPageString,this.StyleName,(i+1).ToString()));
407????????????????}
?
408????????????????else?
409????????????????{
410????????????????????writer.Write(String.Format(preString,this.StyleName,"number"));
411????????????????????pagingHyperLinks[i].RenderControl(writer);
412????????????????????writer.Write(lastString);
413????????????????}

414????????????}

415????????}

416
417????????void?RenderPagingButtons(HtmlTextWriter?writer)?
418????????{
419????????????int?totalPages;
420
421????????????totalPages?=?CalculateTotalPages();
422
423????????????if?(?totalPages?<=?5)?
424????????????{
425????????????????RenderButtonRange(0,?totalPages,?writer);
426????????????}
?
427????????????else?
428????????????{
429????????????????int?lowerBound?=?(PageIndex?-?3);
430????????????????int?upperBound?=?(PageIndex?+?2);
431
432????????????????if?(lowerBound?<=?0)
433????????????????{
434????????????????????lowerBound?=?0;
435????????????????????upperBound?=?5;
436????????????????}

437
438????????????????if?(PageIndex?<?(totalPages?-?2))
439????????????????????RenderButtonRange(lowerBound,?upperBound,?writer);
440
441????????????????else?if?(PageIndex?>=?(totalPages?-?2))
442????????????????????RenderButtonRange((totalPages?-?5),?totalPages,?writer);
443????????????}

444????????}

445
446????????void?AddPageLinks()?
447????????{
448????????????pagingHyperLinks?=?new?HyperLink[CalculateTotalPages()];
449
450????????????for?(int?i?=?0;?i?<?pagingHyperLinks.Length;?i++)?
451????????????{
452????????????????pagingHyperLinks[i]?=?new?HyperLink();
453????????????????pagingHyperLinks[i].EnableViewState?=?false;
454????????????????pagingHyperLinks[i].Text?=?(i?+?1).ToString();
455????????????????pagingHyperLinks[i].ID?=?(i?+?1).ToString();
456????????????????pagingHyperLinks[i].NavigateUrl?=?CreatePagerURL((i?+?1).ToString());
457????????????????Controls.Add(pagingHyperLinks[i]);
458????????????}

459????????}

460
461????????void?AddFirstLastLinks()?
462????????{
463????????????int?start?=?1;
464????????????firstLink?=?new?HyperLink();
465????????????firstLink.ID?=?"First";
466????????????firstLink.Text?=?this.FirstPageText;
467????????????firstLink.NavigateUrl?=?CreatePagerURL(start.ToString());
468????????????Controls.Add(firstLink);
469
470????????????int?last?=?CalculateTotalPages();
471????????????lastLink?=?new?HyperLink();
472????????????lastLink.ID?=?"Last";
473????????????lastLink.Text?=?this.LastPageText;
474????????????lastLink.NavigateUrl?=?CreatePagerURL(last.ToString());
475????????????Controls.Add(lastLink);
476????????}

477
478????????void?AddPreviousNextLinks()?
479????????{
480????????????int?previous;
481????????????
482????????????if?(this.PageIndex?<?2)
483????????????????previous?=?1;
484????????????else
485????????????????previous?=?this.PageIndex-1;
486
487????????????previousLink?=?new?HyperLink();
488????????????previousLink.ID?=?"Prev";
489????????????previousLink.Text?=?this.PreviousPageText;
490????????????previousLink.NavigateUrl?=?CreatePagerURL(previous.ToString());
491????????????Controls.Add(previousLink);
492
493????????????int?next?=?this.PageIndex?+?1;
494????????????nextLink?=?new?HyperLink();
495????????????nextLink.ID?=?"Next";
496????????????nextLink.Text?=?this.NextPageText;
497????????????nextLink.NavigateUrl?=?CreatePagerURL(next.ToString());
498????????????Controls.Add(nextLink);
499????????}

500????????
501????????/**////?<summary>
502????????///?Override?how?this?control?handles?its?controls?collection
503????????///?</summary>

504????????public?override?ControlCollection?Controls
505????????{
506????????????get
507????????????{
508????????????????EnsureChildControls();
509????????????????return?base.Controls;
510????????????}

511
512????????}

513
514????????private?bool?HasPrevious?
515????????{
516????????????get?
517????????????{
518????????????????if?(PageIndex?>?0)
519????????????????????return?true;
520
521????????????????return?false;
522????????????}

523????????}

524
525????????private?bool?HasNext?
526????????{
527????????????get?
528????????????{
529????????????????if?(PageIndex?+?1?<?CalculateTotalPages()?)
530????????????????????return?true;
531
532????????????????return?false;
533????????????}

534????????}

535
536????????/**////?<summary>
537????????///?計算總頁數
538????????///?</summary>
539????????///?

540????????public?virtual?int?CalculateTotalPages()?
541????????{
542????????????int?totalPagesAvailable;
543
544????????????if?(TotalRecord?==?0)
545????????????????return?0;
546
547????????????totalPagesAvailable?=?TotalRecord?/?PageSize;
548
549????????????if?((TotalRecord?%?PageSize)?>?0)
550????????????????totalPagesAvailable++;
551
552????????????return?totalPagesAvailable;
553????????}

554
555????????string?currentPageStringFormat?=?"當前頁{0}/{1}?共有{2}條記錄";//?=?"Page?{0}?of?{1}?({2}?records)?&nbsp;-&nbsp;?";
556????????public?string?CurrentPageStringFormat
557????????{
558????????????get?{?return?currentPageStringFormat;?}
559????????????set?{?currentPageStringFormat?=?value;?}
560????????}

561????}

562}

563



如果有比我還懶的人,可以直接下載下面的DLL:
/Files/bqrm/BqrmPager.rar

轉載于:https://www.cnblogs.com/bqrm/archive/2008/04/26/1172477.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/120657.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息