原文地址为: 分页控件AspNetPager的用法

分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,而且有时候我们需要对DataList和Repeater甚至自定义数据绑定控件进行分页,手工编写分页代码不但技术难度大、任务繁琐而且代码重用率极低,因此分页已成为许多ASP.NET程序员最头疼的问题之一。
   今天闲来无事就学习学习了aspNetPager分页控件的用法:
AspNetPager针对ASP.NET分页控件的不足,提出了与众不同的解决asp.net中分页问题的方案,即将分页导航功能与数据显示功能完全独立开来,由用户自己控制数据的获取及显示方式,因此可以被灵活地应用于任何需要实现分页导航功能的地方,如为GridView、DataList以及Repeater等数据绑定控件实现分页、呈现自定义的分页数据以及制作图片浏览程序等,因为AspNetPager控件和数据是独立的,因此要分页的数据可以来自任何数据源,如SQL Server、Oracle、Access、mysql、DB2等数据库以及XML文件、内存数据或缓存中的数据、文件系统等等。
1.首先下载aspnetpager控件,我这儿的版本是6.0.0.0   点击下载
2.把控件加到项目中(添加自定义控件的方法),并把它拖放到页面上:

< webdiyer:AspNetPager  ID ="AspNetPager1"  runat ="server"  
AlwaysShow ="True"  //总是显示分页控件,即使要分页的数据只有一页 
  OnPageChanged ="AspNetPager1_PageChanged"   //分页发生改变时触发事件
UrlPaging ="true"  //通过URL传递分页信息的方式来分页。如果设为true,禁用ViewState也能达到效果。如果设置为false,禁用了viewstate则无法实现分页. 
NumericButtonTextFormatString="[{0}]" //页索引数字显示的格式
 ShowCustomInfoSection ="Left" >   //显示当前页和总页数信息,默认值不显示,为left则将显示在页索引前,为right则为页索引后             </ webdiyer:AspNetPager >

3.Page_Load事件:

   protected   void  Page_Load( object  sender, EventArgs e)
         {
            if (!Page.IsPostBack)
            {
                BindGridView();
            }
        }

BindGridView方法如下:

    public   void  BindGridView()
         {
            string sql = "select * from gw_newsletter_group";//自定义的SQL语句
            int recordcount;
            DataSet ds = GetPage(sql, this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageSize,out recordcount);
            this.AspNetPager1.RecordCount = recordcount;
            this.GridView1.DataSource = ds;
            this.GridView1.DataBind();
            AspNetPager1.CustomInfoHTML = "记录总数:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";
            AspNetPager1.CustomInfoHTML += " 总页数:<b>" + AspNetPager1.PageCount.ToString() + "</b>";
            AspNetPager1.CustomInfoHTML += " 当前页:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";
        }

其中的GetPage方法代码如下:( GetConnection()是返回一个SqlConnection对象)

/**/ /// <summary>
        /// Get Data By CurrentPage
        /// </summary>
        /// <param name="sql">SQL</param>
        /// <param name="currentPage">current Page</param>
        /// <param name="pagesize">Page Size</param>
        /// <param name="recordcount">Total Record</param>
        /// <returns></returns>
         public  DataSet GetPage( string  sql,  int  currentPage,  int  pagesize, out   int  recordcount)
         {
            SqlDataAdapter ada = new SqlDataAdapter(sql, GetConnection());
            DataSet ds = new DataSet();
            int startRow = (currentPage - 1) * pagesize;
            ada.Fill(ds, startRow, pagesize, "table");
            recordcount = GetPageRecord(sql);
            return ds;
        }

GetPageRecord方法:( 返回总的记录数)

   public   int  GetPageRecord( string  sql)
         {
            sql = System.Text.RegularExpressions.Regex.Replace(sql, "ORDER BY.*", "");
            sql = "select count(*) from (" + sql + ") as temp";
            SqlCommand cmd = new SqlCommand(sql, GetConnection());
            cmd.Connection.Open();
            int recordcount = (int)cmd.ExecuteScalar();
            return recordcount;
        }

这里注意要去掉”Order By“的字符串( 聚合函数不能和"ORDER BY"连用)
4.另外:还有个事件:

     protected   void  AspNetPager1_PageChanged( object  sender, EventArgs e)
         {
            BindGridView();

        }

到目前为止就可以运行看到效果:
地址栏显示效果:
注意这里是把属性: urlpaging=true,而且如果禁止了ViewState也能实现。
如果把 urlpaging=false 的话
如果禁止了ViewState就无法实现分页功能了。
上面的代码中有这样一句话:

 AspNetPager1.CustomInfoHTML  +=   "  总页数:<b> "   +  AspNetPager1.PageCount.ToString()  +   " </b> " ;

这里就有一个问题是aspNetPage1.PageCount怎样得出来的呢?我们并没有为它赋值。(这里而且这个属性是只读的)
实际上它的值是本身的控件就实现了:我分析觉得代码可能如下:

  public   int  GetPagerCount( string  sql,  int  pagesize)
         {
            int recordcount = GetPageRecord(sql);//方法见上
            int pagecount=recordcount/pagesize;
            return (recordcount % pagesize == 0 ? pagecount : pagecount + 1);
        }

这样就可以得出到底分页的页数.
最后补充说明:由于我只是初步研究这个控件,不过上面的代码都是经过测试通过的。
而且我还发现这个控件还有很多属性可以改变它的样式外观的。而且还比较灵活的。希望能给朋友们带来一些帮助。
另外如果有什么地方不正确还希望高手能及时的提出来!
转载请注明本文地址: 分页控件AspNetPager的用法

分页控件AspNetPager的用法相关推荐

  1. asp.net中分页控件AspNetPager美化样式

    在asp.net开发中数据列表分页是再常见不过的功能了,相信大家使用AspNetPager的也很多,使用CSS可以让样式更好看,如下图: 新建一个名为content.css文件,如下: /*分页控件* ...

  2. DataList编辑、更新、取消、删除、分页(分页控件 AspNetPager.dll)

    DataList编辑.更新.取消.删除.分页,分页用的是AspNetPager.dll4.3控 件,功能挺强大的,自己可以到网上下个 1.aspx 程序代码 <%@ Page Language= ...

  3. AspNetPager分页控件

    http://files.cnblogs.com/zhangweiguo3984/AspNetPager433.rar 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以 ...

  4. AspNetPager免费开源分页控件7.4.1版发布

    前几天发布的7.4版出现了postback分页情况下客户端脚本未注册的bug,非常抱歉,7.4.1版已修正这些问题,具体更新说明如下: 修正了Postback分页且显示页索引文本框的情况下,客户端脚本 ...

  5. Repeater使用 AspNetPager分页控件

    一.AspNetPager分页控件 分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net ...

  6. 分页控件-ASP.NET(AspNetPager)

    AspNetPager是asp.net中常用的分页控件,下载AspNetPager.dll,添加引用,在工具栏就可以看到AspNetPager控件: <div class="oa-el ...

  7. 如何使用AspNetPager分页控件对动态查询的结果进行分页

    注意: 如果 设置UrlPaging 为True,后台用ViewState是保存不住查询条件的,如果非要用Url分页,可以用Session保存查询条件. 后台代码 : const string vsK ...

  8. asp.net下用AspNetPager分页控件对DataList进行分页

    第一次写博客,其实注册挺久的了,一直不知道写些什么好,原因是自己菜鸟一个,知识浅陋,不好出来献丑. 但是慢慢接触的多了,总觉得有些东西是不是该写一写,跟分享一下!不敢说对大家都有用,互相学习,也权当是 ...

  9. java datatable用法_Java中实现DataTable工具类,并利用其实现简单分页控件。

    具体工具类代码,请见我上一个博客. 一.工具类的使用 1.1 DataTable工具类的使用 1.1.1DataTable简单解析 顾名思义,DataTable其实就是一张虚拟数据表,用于存储由数据库 ...

  10. asp.net分页控件使用详解【附实例下载】

    本篇文章主要对asp.net创建事务的方法进行实例介绍,具有很好的参考价值,需要的朋友一起来看下吧 一.说明 AspNetPager.dll这个分页控件主要用于asp.net webform网站,现将 ...

最新文章

  1. html中绝对定位的父级,父元素相对定位,子元素绝对定位
  2. python界面图片-python实现读取并显示图片方法(不需要图形界面)
  3. (转)spring aop(下)
  4. Misc-----[2021祥云杯初赛]鸣雏恋 提取压缩包文件图片名8个为一组 转ASC码base64转图片
  5. ASA防火墙外部web应用端口与默认审查协议相冲突的解决方法
  6. 井下三专两闭锁的内容_局部通风机三专两闭锁具体规定
  7. vb用鼠标实现屏幕绘图
  8. Cocos2dx 之 ButtonSprite
  9. 【广东大学生网络攻防大赛-WriteUp(非官方)】Misc | 复合
  10. dnf连不上服务器删什么文件,DNF:4.9更新“无法上游戏”,删1个文件才可登录,策划不争气!...
  11. iOS开发--AVPlayer实现音乐播放器
  12. linux怎么打开ppt文件格式,PPT 文件扩展名: 它是什么以及如何打开它?
  13. 城市交通出行效率对比分析与思考
  14. qq群排名如何引流?QQ群排名引流方法,QQ群排名如何做?
  15. 在Ubuntu安装Deepin软件
  16. 多线程(18) pthread_cond_broadcast
  17. 理解MMORPG、回合制、ARPG、SLG、Roguelike、卡牌、竞技类
  18. mysql英文版数据库备份方法_mysql数据库太大了如何备份与还原
  19. 详解JSP 中Spring工作原理及其作用
  20. not marked as ignorable

热门文章

  1. 计算机网上邻居的网络密码是什么,网上邻居打开时需访问密码是怎么回事
  2. js正则验证手机号码和座机号码及邮箱
  3. 【观察】华为:给园区安防加点“智慧”
  4. win7精简_微软从未公开的win10版本,3GB+极度精简,老爷机总算有救了!
  5. Rplidar学习(二)—— SDK库文件学习
  6. Rplidar A2M8屏蔽角度
  7. linux mysql端口被占用解决方法_3306端口被占用导致MySQL无法启动
  8. 公司项目JAVA开发规范总结(七)——编程规范
  9. “数据科学”课程群与 “数据科学导论”课程建设初探
  10. Android实现文本折叠效果