当前位置: 首页 > news >正文

自定义的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.     }  
 
源码其实例下载:
 
本地下载

转载于:https://www.cnblogs.com/Areas/archive/2011/09/23/2186606.html

相关文章:

  • python 数学运算符
  • 标题一定要长~~~~长~~~~~~~~~~~~~~长~~~~~~~~
  • python 中set模块的用法
  • Turbo C 2.0集成开发环境的使用
  • Ajax on Rails 2. The Eras of Web Development
  • 创建按钮的两种方法
  • JavaScript对象知识点总结
  • 在Python常用模块I如何打开相关文件的方法
  • 开发各种信息管理系统的标准演示数据都帮你整理好了,少了录入演示\测试\模拟数据的烦恼了[提供下载]...
  • Web2.0工具箱
  • Lync2013 恢复-整残之后如何重新安装
  • js获得浏览器相关参数【转】
  • ASP.NET 安全认证(三)
  • Centos7.4 安装 Inception
  • 九、IBeamMDAA的Web客户端的配置与使用
  • DOM的那些事
  • Javascript编码规范
  • Java教程_软件开发基础
  • Linux Process Manage
  • mac修复ab及siege安装
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • vue脚手架vue-cli
  • Webpack 4 学习01(基础配置)
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 测试如何在敏捷团队中工作?
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 多线程事务回滚
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 前端自动化解决方案
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 【云吞铺子】性能抖动剖析(二)
  • # 计算机视觉入门
  • #每日一题合集#牛客JZ23-JZ33
  • (12)Hive调优——count distinct去重优化
  • (70min)字节暑假实习二面(已挂)
  • (多级缓存)缓存同步
  • (二)丶RabbitMQ的六大核心
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • *Django中的Ajax 纯js的书写样式1
  • ... 是什么 ?... 有什么用处?
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .Net FrameWork总结
  • .net 流——流的类型体系简单介绍
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET构架之我见
  • .NET上SQLite的连接
  • .net项目IIS、VS 附加进程调试
  • @Controller和@RestController的区别?
  • @Transactional 竟也能解决分布式事务?