English versionEnglish
博杨计算机有限公司

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 }