zoukankan      html  css  js  c++  java
  • 自定义的asp.net翻页控件

    自定义的asp.net翻页控件,利用RenderContents事件,动态生成页码,

    并用JAVASCRIPT触发后台翻页事件
    用脚 本触发事件得实例接口:IPostBackEventHandler  
    其下有一个方法public void RaisePostBackEvent(string eventArgument)  
     
    也就是当点击事件:output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference(this"__sp_TurnPage_" + preIndex + "_" + PageCount));
    传入参数。。分析参数就可以做自已想要的事情。
     
     
    自定义控件不了解的可以看:http://www.jiamaocode.com/Cts/1035.html
    自定义事件不懂的可以看另一篇:http://www.jiamaocode.com/Cts/1150.html
     
     
    折叠C# 代码
    1. [DefaultProperty("Text")]  
    2.     [ToolboxData("<{0}:splitpage runat=server></{0}:splitpage>")]  
    3.     public class splitpage : WebControl,IPostBackEventHandler  
    4.     {  
    5.         private int _SelectPageCount = 10;  
    6.         [Bindable(true)]  
    7.         [Category("SelectPageCount")]  
    8.         [DefaultValue("10")]  
    9.         [Localizable(true)]  
    10.         public int SelectPageCount {  
    11.             get {  
    12.                 return _SelectPageCount;  
    13.             }  
    14.             set { _SelectPageCount = value; }  
    15.         }  
    16.   
    17.         private int _PageIndex = 1;  
    18.         [Bindable(true)]  
    19.         [Category("PageIndex")]  
    20.         [DefaultValue("10")]  
    21.         [Localizable(true)]  
    22.         public int PageIndex  
    23.         {  
    24.             get  
    25.             {  
    26.                 return _PageIndex;  
    27.             }  
    28.             set { _PageIndex = value; }  
    29.         }  
    30.   
    31.         private int _PageCount = 1;  
    32.         [Bindable(true)]  
    33.         [Category("PageCount")]  
    34.         [DefaultValue("1")]  
    35.         [Localizable(true)]  
    36.         public int PageCount  
    37.         {  
    38.             get  
    39.             {  
    40.                 return _PageCount;  
    41.             }  
    42.             set { _PageCount = value; }  
    43.         }  
    44.   
    45.         string _pageindexCss = "PageIndexCSS";  
    46.         /// <summary>  
    47.         /// 翻页的样式  
    48.         /// </summary>  
    49.         [Bindable(true)]  
    50.         [Category("PageIndexCss")]  
    51.         [DefaultValue("1")]  
    52.         [Localizable(true)]  
    53.         public string PageIndexCss  
    54.         {  
    55.             get { return _pageindexCss; }  
    56.             set { _pageindexCss = value; }  
    57.         }  
    58.         string _CurPageindexCss = "PageCurIndexCSS";  
    59.         /// <summary>  
    60.         /// 当前页的样式  
    61.         /// </summary>  
    62.         [Bindable(true)]  
    63.         [Category("CurPageIndexCss")]  
    64.         [DefaultValue("1")]  
    65.         [Localizable(true)]  
    66.         public string CurPageIndexCss  
    67.         {  
    68.             get { return _CurPageindexCss; }  
    69.             set { _CurPageindexCss = value; }  
    70.         }  
    71.   
    72.         public delegate void DelegatePageIndexChange(object sender,int pageIndex,int pageCount);  
    73.         public event DelegatePageIndexChange PageIndexChangeHanlder;  
    74.   
    75.         //重写默认的标签  
    76.         protected override HtmlTextWriterTag TagKey { get { return HtmlTextWriterTag.Div; } }       
    77.     
    78.         protected override void RenderContents(HtmlTextWriter output)  
    79.         {  
    80.             //output.AddAttribute(HtmlTextWriterAttribute.Onclick,Page.ClientScript.GetPostBackEventReference(this,"test"));  
    81.             //output.RenderBeginTag(HtmlTextWriterTag.Div);  
    82.             //output.Write("test");  
    83.             //output.RenderEndTag();  
    84.   
    85.             //首先写入翻页样式  
    86.             if (CurPageIndexCss == "PageCurIndexCSS" || PageIndexCss == "PageIndexCSS")  
    87.             {  
    88.                 output.AddAttribute(HtmlTextWriterAttribute.Type"text/css");  
    89.                 output.RenderBeginTag(HtmlTextWriterTag.Style);  
    90.                 output.Write("a.PageIndexCSS{padding: 2px;padding-left:4px;padding-right:4px;background: #fff;border: 1px solid #9AAFE5;text-decoration: none;color: #2452ac;margin-right:6px;" +  
    91.         "cursor: pointer;}a.PageIndexCSS:link{color: #2452ac;text-decoration: none;cursor: pointer;}a.PageIndexCSS:visited{color: #2452ac;text-decoration: none;cursor: pointer;}a.PageIndexCSS:active" +  
    92.     "{color: #2452ac;text-decoration: underline;cursor: pointer;}a.PageIndexCSS:hover{border: 1px solid #2452ac;color: black;text-decoration: underline;cursor: pointer;}a.PageCurIndexCSS{padding: 2px;" +  
    93.        "padding-left:4px;padding-right:4px;border: 1px solid #2452ac;background-color: #2452ac;text-decoration: none;color: #fff;margin-right:6px;}");  
    94.                 output.RenderEndTag();  
    95.             }  
    96.             var showPagesList = new List<int>();  
    97.             showPagesList.Add(1);//加上第一页     
    98.             if (PageCount > 1) showPagesList.Add(2);  
    99.   
    100.             int showFirst = PageIndex - SelectPageCount / 2 + 1;  
    101.             int showLast = PageIndex + SelectPageCount / 2;  
    102.             if (showFirst < 0) showLast = showLast - showFirst;  
    103.             if (showLast > PageCount) showLast = PageCount;  
    104.   
    105.             for (int i = showFirst; i < showLast; i++)  
    106.             {  
    107.                 if (!showPagesList.Contains(i) && i > 0) showPagesList.Add(i);//如果里面不存在则加入显示行列  
    108.             }  
    109.   
    110.             if (PageCount - 1 > 1 && !showPagesList.Contains(PageCount - 1)) showPagesList.Add(PageCount - 1);//加上最后第二页  
    111.             if (PageCount > 1 && !showPagesList.Contains(PageCount)) showPagesList.Add(PageCount);//加上最后一页  
    112.   
    113.             //写入上一页  
    114.             int preIndex = PageIndex > 1 ? PageIndex - 1 : 0;  
    115.             //如果当前页不如首页.则显示上一页  
    116.             if (preIndex > 0)  
    117.             {  
    118.                 output.AddAttribute(HtmlTextWriterAttribute.Class, PageIndexCss);  
    119.                 output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference(this"__sp_TurnPage_" + preIndex + "_" + PageCount));  
    120.                 output.RenderBeginTag(HtmlTextWriterTag.A);  
    121.                 output.Write("上一页");  
    122.                 output.RenderEndTag();  
    123.             }  
    124.             //显示中间页  
    125.             int showedindex = 0;  
    126.             foreach (int index in showPagesList)  
    127.             {  
    128.                 if (index - showedindex > 1)  
    129.                 {  
    130.                     output.RenderBeginTag(HtmlTextWriterTag.Span);  
    131.                     output.Write(" ... ");  
    132.                     output.RenderEndTag();  
    133.                 }  
    134.                 output.AddAttribute(HtmlTextWriterAttribute.Class,index==PageIndex?CurPageIndexCss:PageIndexCss);  
    135.                 if (index != PageIndex) output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference(this"__sp_TurnPage_" + index + "_" + PageCount));  
    136.                 output.RenderBeginTag(HtmlTextWriterTag.A);  
    137.                 output.Write(index);  
    138.                 output.RenderEndTag();  
    139.   
    140.                 showedindex = index;  
    141.             }  
    142.   
    143.             //写入下一页  
    144.             int nextIndex = PageIndex < PageCount ? PageIndex + 1 : 0;  
    145.             //如果当前页不为最后一页.则显示下一页  
    146.             if (nextIndex > 0)  
    147.             {  
    148.                 output.AddAttribute(HtmlTextWriterAttribute.Class, PageIndexCss);  
    149.                 output.AddAttribute(HtmlTextWriterAttribute.Onclick, Page.ClientScript.GetPostBackEventReference(this"__sp_TurnPage_" + nextIndex + "_" + PageCount));  
    150.                 output.RenderBeginTag(HtmlTextWriterTag.A);  
    151.                 output.Write("下一页");  
    152.                 output.RenderEndTag();  
    153.             }  
    154.         }         
    155.   
    156.         /// <summary>  
    157.         /// 响应事件  
    158.         /// </summary>  
    159.         /// <param name="eventArgument"></param>  
    160.         public void RaisePostBackEvent(string eventArgument)  
    161.         {  
    162.             string[] pcs = eventArgument.Split('_');  
    163.             PageIndex = int.Parse(pcs[4]);//转到第几页  
    164.             PageCount = int.Parse(pcs[5]);//总共有几页  
    165.   
    166.             if (PageIndexChangeHanlder != null)  
    167.             {  
    168.                 PageIndexChangeHanlder(this, PageIndex, PageCount);//触发翻页事件  
    169.             }  
    170.         }  
    171.     }  
     
    源码其实例下载:
     
    Powered By D&J (URL:http://www.cnblogs.com/Areas/)
  • 相关阅读:
    javaweb学习总结(三十三)——使用JDBC对数据库进行CRUD
    javaweb学习总结(三十二)——JDBC学习入门
    javaweb学习总结(三十一)——国际化(i18n)
    javaweb学习总结(三十)——EL函数库
    javaweb学习总结(二十九)——EL表达式
    javaweb学习总结(二十八)——JSTL标签库之核心标签
    javaweb学习总结(二十七)——jsp简单标签开发案例和打包
    JSP页面中使用JSTL标签出现无法解析问题解决办法
    MySQL客户端输出窗口显示中文乱码问题解决办法
    windows操作系统查看占用端口的进程
  • 原文地址:https://www.cnblogs.com/Areas/p/2186606.html
Copyright © 2011-2022 走看看