AspNetPager分页控件
AspNetPager源代码—AspNetPager.cs
1 //AspNetPager分页控件源代码:
2 //版权所有:陕西省延安市吴起县博杨计算机有限公司 杨涛(Webdiyer)
3 //此源代码仅供学习参考,不得用于任何商业用途;
4 //您可以修改并重新编译该控件,但源代码中的版权信息必须原样保留!
5 //有关控件升级及新控件发布信息,请留意 www.webdiyer.com 。
6
7
8 using System;
9 using System.ComponentModel;
10 using System.Text;
11 using System.Web.UI;
12 using System.Web.UI.WebControls;
13 using System.Web;
14 using System.Security.Permissions;
15
16 namespace Wuqi.Webdiyer
17 {
18 #region AspNetPager Server Control
19
20 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Class[@name="AspNetPager"]/*'/>
21 [AspNetHostingPermission(SecurityAction.Demand, Level = AspNetHostingPermissionLevel.Minimal)]
22 [DefaultProperty("PageSize")]
23 [DefaultEvent("PageChanged")]
24 [ParseChildren(false)]
25 [PersistChildren(false)]
26 [ANPDescription("desc_AspNetPager")]
27 [Designer(typeof(PagerDesigner))]
28 [ToolboxData("<{0}:AspNetPager runat=server></{0}:AspNetPager>")]
29 [System.Drawing.ToolboxBitmap(typeof(AspNetPager),"AspNetPager.bmp")]
30 public partial class AspNetPager : Panel, INamingContainer, IPostBackEventHandler, IPostBackDataHandler
31 {
32
33 #region Control Rendering Logic
34
35 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="OnInit"]/*'/>
36 protected override void OnInit(EventArgs e)
37 {
38 base.OnInit(e);
39 if (null != CloneFrom && string.Empty != CloneFrom.Trim())
40 {
41 AspNetPager ctrl = Parent.FindControl(CloneFrom) as AspNetPager;
42 if (null == ctrl)
43 {
44 string errStr = SR.GetString("clonefromexeption") ??
45 "The control \" %controlID% \" does not exist or is not of type Wuqi.Webdiyer.AspNetPager!";
46 throw new ArgumentException(errStr.Replace("%controlID%", CloneFrom), "CloneFrom");
47 }
48 if (null != ctrl.cloneFrom && this == ctrl.cloneFrom)
49 {
50 string errStr = SR.GetString("recusiveclonefrom") ??
51 "Invalid value for the CloneFrom property, AspNetPager controls can not to be cloned recursively!";
52 throw new ArgumentException(errStr, "CloneFrom");
53 }
54 cloneFrom = ctrl;
55 CssClass = cloneFrom.CssClass;
56 Width = cloneFrom.Width;
57 Height = cloneFrom.Height;
58 HorizontalAlign = cloneFrom.HorizontalAlign;
59 BackColor = cloneFrom.BackColor;
60 BackImageUrl = cloneFrom.BackImageUrl;
61 BorderColor = cloneFrom.BorderColor;
62 BorderStyle = cloneFrom.BorderStyle;
63 BorderWidth = cloneFrom.BorderWidth;
64 Font.CopyFrom(cloneFrom.Font);
65 ForeColor = cloneFrom.ForeColor;
66 EnableViewState = cloneFrom.EnableViewState;
67 Enabled = cloneFrom.Enabled;
68 }
69 }
70
71 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="OnLoad"]/*'/>
72 protected override void OnLoad(EventArgs e)
73 {
74 if (UrlPaging)
75 {
76 currentUrl = Page.Request.Path;
77 queryString = Page.Request.ServerVariables["Query_String"];
78 if (!Page.IsPostBack && cloneFrom == null)
79 {
80 int index;
81 int.TryParse(Page.Request.QueryString[UrlPageIndexName],out index);
82 if (index <= 0)
83 index = 1;
84 else if(ReverseUrlPageIndex)
85 index = PageCount - index + 1;
86 PageChangingEventArgs args = new PageChangingEventArgs(index);
87 OnPageChanging(args);
88 }
89 }
90 else
91 {
92 inputPageIndex = Page.Request.Form[UniqueID + "_input"];
93 }
94 base.OnLoad(e);
95 }
96
97 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="OnPreRender"]/*'/>
98 protected override void OnPreRender(EventArgs e)
99 {
100 if (PageCount > 1)
101 {
102 if ((ShowPageIndexBox == ShowPageIndexBox.Always) || (ShowPageIndexBox == ShowPageIndexBox.Auto && PageCount >= ShowBoxThreshold))
103 {
104 StringBuilder sb = new StringBuilder("<script language=\"Javascript\" type=\"text/javascript\"><!--\n");
105 if (UrlPaging)
106 {
107 sb.Append("function ANP_goToPage(boxEl){if(boxEl!=null){var pi;if(boxEl.tagName==\"SELECT\")");
108 sb.Append("{pi=boxEl.options[boxEl.selectedIndex].value;}else{pi=boxEl.value;}");
109 if(string.IsNullOrEmpty(UrlPagingTarget))
110 sb.Append("location.href=\"").Append(GetHrefString(-1)).Append("\"");
111 else
112 sb.Append("window.open(\"").Append(GetHrefString(-1)).Append("\",\"").Append(UrlPagingTarget).Append("\")");
113 sb.Append(";}}\n");
114 }
115 if (PageIndexBoxType == PageIndexBoxType.TextBox)
116 {
117 string ciscript = SR.GetString("checkinputscript");
118 if (ciscript != null)
119 {
120 ciscript = ciscript.Replace("%PageIndexOutOfRangeErrorMessage%", PageIndexOutOfRangeErrorMessage);
121 ciscript = ciscript.Replace("%InvalidPageIndexErrorMessage%", InvalidPageIndexErrorMessage);
122 }
123 sb.Append(ciscript).Append("\n");
124 string keyScript = SR.GetString("keydownscript");
125 sb.Append(keyScript);
126 }
127 sb.Append("\n--></script>");
128 Type ctype = GetType();
129 ClientScriptManager cs = Page.ClientScript;
130 if (!cs.IsClientScriptBlockRegistered(ctype, "anp_script"))
131 cs.RegisterClientScriptBlock(ctype, "anp_script", sb.ToString());
132 }
133 }
134 base.OnPreRender(e);
135 }
136
137 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="AddAttributesToRender"]/*'/>
138 protected override void AddAttributesToRender(HtmlTextWriter writer)
139 {
140 if (Page != null && !UrlPaging)
141 Page.VerifyRenderingInServerForm(this);
142 base.AddAttributesToRender(writer);
143 }
144
145 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="RenderBeginTag"]/*'/>
146 public override void RenderBeginTag(HtmlTextWriter writer)
147 {
148 bool showPager = (PageCount > 1 || (PageCount <= 1 && AlwaysShow));
149 writer.WriteLine();
150 writer.Write("<!-- ");
151 writer.Write("AspNetPager " + VersionNumber + " Copyright:2003-2010 Webdiyer (www.webdiyer.com)");
152 writer.WriteLine(" -->");
153 if (!showPager)
154 {
155 writer.Write("<!--");
156 writer.Write(SR.GetString("autohideinfo"));
157 writer.Write("-->");
158 }
159 else
160 base.RenderBeginTag(writer);
161 }
162
163 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="RenderEndTag"]/*'/>
164 public override void RenderEndTag(HtmlTextWriter writer)
165 {
166 if (PageCount > 1 || (PageCount <= 1 && AlwaysShow))
167 base.RenderEndTag(writer);
168 writer.WriteLine();
169 writer.Write("<!-- ");
170 writer.Write("AspNetPager " + VersionNumber + " Copyright:2003-2010 Webdiyer (www.webdiyer.com)");
171 writer.WriteLine(" -->");
172 writer.WriteLine();
173 }
174
175
176 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Method[@name="RenderContents"]/*'/>
177 protected override void RenderContents(HtmlTextWriter writer)
178 {
179 if (PageCount <= 1 && !AlwaysShow)
180 return;
181 writer.Indent = 0;
182 if (ShowCustomInfoSection != ShowCustomInfoSection.Never)
183 {
184 if (LayoutType == LayoutType.Table)
185 {
186 writer.AddAttribute(HtmlTextWriterAttribute.Width, "100%");
187 writer.AddAttribute(HtmlTextWriterAttribute.Style, Style.Value);
188 if (Height != Unit.Empty)
189 writer.AddStyleAttribute(HtmlTextWriterStyle.Height, Height.ToString());
190 writer.AddAttribute(HtmlTextWriterAttribute.Border, "0");
191 writer.AddAttribute(HtmlTextWriterAttribute.Cellpadding, "0");
192 writer.AddAttribute(HtmlTextWriterAttribute.Cellspacing, "0");
193 writer.RenderBeginTag(HtmlTextWriterTag.Table); //<table>
194 writer.RenderBeginTag(HtmlTextWriterTag.Tr); //<tr>
195 }
196 if (ShowCustomInfoSection == ShowCustomInfoSection.Left)
197 {
198 RenderCustomInfoSection(writer);
199 RenderNavigationSection(writer);
200 }
201 else
202 {
203 RenderNavigationSection(writer);
204 RenderCustomInfoSection(writer);
205 }
206 if (LayoutType == LayoutType.Table)
207 {
208 writer.RenderEndTag(); //</tr>
209 writer.RenderEndTag(); //</table>
210 }
211 }
212 else
213 RenderPagingElements(writer);
214 }
215
216
217 #endregion
218
219
220 }
221
222 #endregion
223
224
225 #region PageChangingEventHandler Delegate
226 /// <include file='AspNetPagerDocs.xml' path='AspNetPagerDoc/Delegate[@name="PageChangingEventHandler"]/*'/>
227 public delegate void PageChangingEventHandler(object src,PageChangingEventArgs e);
228
229 #endregion
230
231 }
