这里我给大家简单介绍一个具有分页功能的.NET 类----PagedDataSource类。
下面是MSDN对PagedDataSource的解释
封装数据绑定控件(如 DataGrid、GridView、DetailsView 和FormView)的与分页相关的属性,以允许该控件执行分页操作。
无法继承此类。
—MSDN Library – visual Studio 2008
从上面的定义,我们可以看出,我们可以利用PagedDataSource类对DataList 和Repeater 进行分页操作。
我们先来了解几个常用属性:
| 名称 | 说明 |
| 获取或设置一个值,指示是否在数据绑定控件中启用分页。(重要) | |
| 获取或设置当前页的索引。 (重要) | |
| 获取或设置数据源。 (重要) | |
| 获取页面中显示的首条记录的索引。 | |
| 获取一个值,该值指示当前页是否是首页。 | |
| 获取一个值,该值指示当前页是否是最后一页。 | |
| 获取显示数据源中的所有项所需要的总页数。 (重要,如:末页) | |
| 获取或设置要在单页上显示的项数。(每页显示几条记录) |
看过了上面几个属性,我来讲讲PagedDataSource是如何分页的:
先设置好分页的显示标签和链接按钮:
(标签和按钮的作用是用来存放一个值,好用来给PagedDataSource.CurrentPageIndex赋值)
如下图所示:
假设下面的图片示意从数据库读取数据并绑定后显示出来的所有数据:
总共4条数据。
如果要进行每页只显示 2 条记录,如下图所示:
那么只要设PagedDataSource类的CurrentPageIndex = 2 就可以了。
所以,在上图中的 首页 上一页 2 3 4 下一页 末页,都是通过对CurrentPageIndex值的改变来达到的效果。
我们简单来看看这个编程的过程(具体代码就不用写了,网上很多,大家搜索一下就可以找到很多):
第一步,你需要一个DataSet ds = new DataSet(); 来保存你要所查询出来的内容。
第二步,声明一个PagedDataSource pds = new PagedDataSource();并实例化它。
第三步,设置PagedDataSource的相关属性:
pds.DataSource=ds.Tables["XXXX"].DefaultView; //将上面你查询出来的内容绑定给PagedDatasource的实例。
pds.AllowPaging=true;//启用这个实例的分页功能
pds.PageSize=2; //这里设置每页显示几条记录
pds.CurrentPageIndex=0 // 设置当前分页的索引值,该值从0 开始。
为了更好的控制 CurrentPageIndex 值的改变,一般是通过数据的存储来改变的。如上面我就通过对 Lable标记的使用来存放值的。
int current =Convert.ToInt32(Label1.Text) – 1;
pds.CurrentPageIndex=current;
也可以写成一行:
pds.CurrentPageIndex= Convert.ToInt32(Convert.ToInt32(Label1.Text)-1);
最后,当你单击首页 上一页 2 3 4 下一页 末页 的任何一个时候,只要为CurrentPageIndex赋上相应的值,并重新绑定值就可以进行翻页了。
总结:
分页主要是对PagedDataSource这个类的使用来做的,只要理解了PagedDataSource 这几个重要属性,页面上分页的样式你想做成什么样的效果都能实现。
但是由于每次翻页都会重新在数据中查询一次 有点消耗资源,更好的解决方案希望会的朋友多多指教。
【参考徐老师的课程的小结】