ASP.NET网页编程之ASP.Net分页控件公布
你可以先看看这篇文章(软微学院生涯-三朝元老经验谈),打不开再跟我说。(我的意思是想让她自己先稍微了解一下到底现在各个方向学的工具以及以后要做的工具大概是什么,因为喜欢做什么样的事其实自己最清楚的)asp.net|分页|控件 因为.net自带的分页功效极为古板,自界说性不强不克不及满意需求,俺花了一个多礼拜的工夫写成的一个.net分页控件。特征:
1、撑持datagrid,datalist平分种数据显现控件,实际上只需有datasource的控件都能够
2、撑持url体例分页,url分页的每页都能够被搜刮引擎搜到,而且撑持url重写
3、控件款式可自界说
4、封装完整,利用历程序只需写一行代码
1/******************************************************************
2**文件名:Pager.cs
3**创立人:杨响武
4**日期:2005年7月27日
5**修正人:
6**日期:
7**描述:
8**
9**----------------------------------------------------------------
10******************************************************************/
11
12usingSystem;
13usingSystem.Web.UI.WebControls;
14usingSystem.Web.UI.HtmlControls;
15usingSystem.Web;
16usingSystem.Web.UI;
17usingSystem.Text.RegularExpressions;
18
19namespaceMyCompany.Controls
20{
21///<summary>
22///分页控件
23///</summary>
24publicclassPager:Label,INamingContainer
25{
26#region成员变量和机关函数
27HttpContextcontext=HttpContext.Current;
28LabelcountLabel;
29HyperLinkpreviousButton;
30HyperLinknextButton;
31HyperLinkfirstButton;
32HyperLinklastButton;
33HyperLink[]pagingLinkButtons;
34
35publicoverrideControlCollectionControls
36{
37get
38{
39EnsureChildControls();
40returnbase.Controls;
41}
42}
43
44protectedoverridevoidCreateChildControls()
45{
46Controls.Clear();
47
48AddCountLabel();
49
50AddPageButtons();
51
52AddPreviousNextHyperLinks();
53
54AddFirstLastHyperLinks();
55}
56#endregion
57
58#region出现办法
59protectedoverridevoidRender(HtmlTextWriterwriter)
60{
61//修正总页数小于即是1的时分不出现任何控件
62//inttotalPages=CalculateTotalPages();
63//
64//if(totalPages<=1)
65//return;
66
67AddAttributesToRender(writer);
68
69writer.AddAttribute(HtmlTextWriterAttribute.Class,this.CssClass,false);
70
71RenderCountLabel(writer);
72
73RenderFirst(writer);
74
75RenderPrevious(writer);
76
77RenderPagingButtons(writer);
78
79RenderNext(writer);
80
81RenderLast(writer);
82}
83
84voidRenderCountLabel(HtmlTextWriterwriter)
85{
86countLabel.RenderControl(writer);
87
88LiteralControll=newLiteralControl("");
89l.RenderControl(writer);
90}
91
92voidRenderFirst(HtmlTextWriterwriter)
93{
94firstButton.RenderControl(writer);
95
96LiteralControll=newLiteralControl("");
97l.RenderControl(writer);
98}
99
100voidRenderLast(HtmlTextWriterwriter)
101{
102lastButton.RenderControl(writer);
103
104LiteralControll=newLiteralControl("");
105l.RenderControl(writer);
106}
107
108voidRenderPrevious(HtmlTextWriterwriter)
109{
110previousButton.RenderControl(writer);
111
112LiteralControll=newLiteralControl("");
113l.RenderControl(writer);
114}
115
116voidRenderNext(HtmlTextWriterwriter)
117{
118nextButton.RenderControl(writer);
119
120LiteralControll=newLiteralControl("");
121l.RenderControl(writer);
122}
123
124privatevoidRenderButtonRange(intstart,intend,HtmlTextWriterwriter)
125{
126for(inti=start;i<end;i++)
127{
128if(PageIndex==i)
129{
130Literall=newLiteral();
131l.Text="<fontcolor=red>"+(i+1).ToString()+"</font>";
132
133l.RenderControl(writer);
134}
135else
136{
137pagingLinkButtons.RenderControl(writer);
138}
139if(i<(end-1))
140writer.Write("");
141}
142
143LiteralControll1=newLiteralControl("");
144l1.RenderControl(writer);
145}
146
147privatevoidRenderPagingButtons(HtmlTextWriterwriter)
148{
149inttotalPages;
150
151totalPages=CalculateTotalPages();
152
153if(totalPages<=10)
154{
155RenderButtonRange(0,totalPages,writer);
156}
157else
158{
159intlowerBound=(PageIndex-4);
160intupperBount=(PageIndex+6);
161
162if(lowerBound<=0)
163lowerBound=0;
164
165if(PageIndex<=4)
166RenderButtonRange(0,10,writer);
167
168elseif(PageIndex<(totalPages-5))
169RenderButtonRange(lowerBound,(PageIndex+6),writer);
170
171elseif(PageIndex>=(totalPages-5))
172RenderButtonRange((totalPages-10),totalPages,writer);
173}
174}
175
176#endregion
177
178#region控件树办法
179///<summary>
180///信息标签
181///</summary>
182voidAddCountLabel()
183{
184countLabel=newLabel();
185countLabel.ID="countLabel";
186countLabel.Text=string.Format(text,CalculateTotalPages().ToString("n0"));
187
188Controls.Add(countLabel);
189}
190
191privatevoidAddPageButtons()
192{
193pagingLinkButtons=newHyperLink;
194
195for(inti=0;i<pagingLinkButtons.Length;i++)
196{
197pagingLinkButtons=newHyperLink();
198pagingLinkButtons.EnableViewState=false;
199pagingLinkButtons.Text=(i+1).ToString();
200pagingLinkButtons.ID=i.ToString();
201pagingLinkButtons.CssClass=linkCss;
202pagingLinkButtons.NavigateUrl=GetHrefString(i);
203
204Controls.Add(pagingLinkButtons);
205}
206}
207
208///<summary>
209///首页末页
210///</summary>
211voidAddFirstLastHyperLinks()
212{
213firstButton=newHyperLink();
214firstButton.ID="First";
215firstButton.Text="首页";
216if(PageIndex!=0&&CalculateTotalPages()>0)
217{
218firstButton.NavigateUrl=GetHrefString(0);
219}
220else
221{
222firstButton.Enabled=false;
223}
224
225Controls.Add(firstButton);
226
227lastButton=newHyperLink();
228lastButton.ID="Last";
229lastButton.Text="末页";
230if(PageIndex!=CalculateTotalPages()-1)
231{
232lastButton.NavigateUrl=GetHrefString(CalculateTotalPages()-1);
233}
234else
235{
236lastButton.Enabled=false;
237}
238Controls.Add(lastButton);
239}
240
241///<summary>
242///上一页下一页
243///</summary>
244voidAddPreviousNextHyperLinks()
245{
246previousButton=newHyperLink();
247previousButton.ID="Prev";
248previousButton.Text="上一页";
249if(HasPrevious)
250{
251previousButton.NavigateUrl=GetHrefString(PageIndex-1);
252}
253else
254{
255previousButton.Enabled=false;
256}
257Controls.Add(previousButton);
258
259nextButton=newHyperLink();
260nextButton.ID="Next";
261nextButton.Text="下一页";
262if(HasNext)
263{
264nextButton.NavigateUrl=GetHrefString(PageIndex+1);
265}
266else
267{
268nextButton.Enabled=false;
269}
270Controls.Add(nextButton);
271}
272#endregion
273
274#region公有属性
275privateboolHasPrevious
276{
277get
278{
279if(PageIndex>0)
280returntrue;
281
282returnfalse;
283}
284}
285
286privateboolHasNext
287{
288get
289{
290if(PageIndex+1<CalculateTotalPages())
291returntrue;
292
293returnfalse;
294}
295}
296#endregion
297
298#region匡助办法和大众属性
299
300///<summary>
301///猎取分页导航按钮的超链接字符串
302///</summary>
303///<paramname="pageIndex">该分页按钮绝对应的页索引</param>
304///<returns>分页导航按钮的超链接字符串</returns>
305privatestringGetHrefString(intpageIndex)
306{
307stringurl=Page.Request.RawUrl;
308
309if(Regex.IsMatch(url,@"(d+).shtml",RegexOptions.IgnoreCase))
310{
311url=Regex.Replace(url,@"(d+).shtml",pageIndex+".shtml");
312}
313
314if(Regex.IsMatch(url,@"PageIndex=(d+)",RegexOptions.IgnoreCase))
315{
316url=Regex.Replace(url,@"PageIndex=(d+)","PageIndex="+pageIndex.ToString());
317}
318
319returnPage.Server.UrlPathEncode(url);
320}
321
322publicintCalculateTotalPages()
323{
324inttotalPagesAvailable;
325
326if(TotalRecords==0)
327return0;
328
329totalPagesAvailable=TotalRecords/PageSize;
330
331if((TotalRecords%PageSize)>0)
332totalPagesAvailable++;
333
334returntotalPagesAvailable;
335}
336
337///<summary>
338///以后页
339///</summary>
340publicintPageIndex
341{
342get
343{
344int_pageIndex=0;
345
346if((!Page.IsPostBack)&&(context.PageIndex>0))
347_pageIndex=context.PageIndex;
348else
349_pageIndex=Convert.ToInt32(ViewState["PageIndex"]);
350
351if(_pageIndex<0)
352return0;
353else
354{
355if(_pageIndex>CalculateTotalPages()-1)
356returnCalculateTotalPages()-1;
357else
358return_pageIndex;
359}
360}
361set
362{
363ViewState["PageIndex"]=value;
364}
365}
366
367///<summary>
368///每页纪录数
369///</summary>
370publicintPageSize
371{
372get
373{
374intpageSize=Convert.ToInt32(ViewState["PageSize"]);
375
376if(pageSize==0)
377{
378return10;
379}
380
381returnpageSize;
382}
383set
384{
385ViewState["PageSize"]=value;
386}
387
388}
389
390///<summary>
391///总纪录数
392///</summary>
393publicintTotalRecords
394{
395get
396{
397returnConvert.ToInt32(ViewState["TotalRecords"]);
398}
399set
400{
401ViewState["TotalRecords"]=value;
402}
403}
404
405privatestringtext="共{0}页";
406
407privatestringlinkCss="";
408///<summary>
409///链接款式
410///</summary>
411publicstringLinkCss
412{
413get{returnlinkCss;}
414set{linkCss=value;}
415}
416
417privatestringtextCss="";
418///<summary>
419///笔墨款式
420///</summary>
421publicstringTextCss
422{
423get{returntextCss;}
424set{textCss=value;}
425}
426
427publicstringTextFormat
428{
429get
430{
431returntext;
432}
433set
434{
435text=value;
436}
437}
438
439#endregion
440}
441}
442
在页面上只必要向上面如许写:
1<%@ControlLanguage="c#"%>
2<%@RegisterTagPrefix="Anchor"Namespace="MyCompany.Controls"Assembly="MyCompany.Controls"%>
3<ANCHOR:PAGERid="Pager1"runat="server"></ANCHOR:PAGER>
我感觉可以顶到50楼,出乎意料的是大家居然纷纷写出自己的博文,还被编辑做成了专题,置于首页头条。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 逐步缩小出错代码段的范围,最终确定错误代码的位置。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦! asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源 如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。 我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
页:
[1]