欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

2004-5-12+ 用DataSet实现分页

发布时间:2025/3/20 27 豆豆
生活随笔 收集整理的这篇文章主要介绍了 2004-5-12+ 用DataSet实现分页 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

大家还记得以前asp中recordset那方便易用的分页功能吗?pagesize,absolutepage,pagecount这些属性的存在大大的方便了页面的编排。而asp.net的DataSet却没有提供相应的方法来进行分页。不过,通过简单的程序,也可以让DataSet实现分页功能。
先来回忆一下recordset是怎么分页的,先是把数据放在recordset里面,然后设定pagesize,和pagecount的值,这样recordset就会自动把自己存放的数据按段进行划分,然后根据absolutepage的值来决定当前页是显示哪一段数据。
在asp.net中,通过DataSet来完成上面的程序也很简单,同样是先把数据库里的数据分段,然后分次存到DataSet中。其中关键是怎么实现分次存储,DataAdapter的Fill方法有一个重载的用法:Fill(DataSet,int,int,string),中间的两个int分别是数据表中记录开始的地方和要存储的记录数,通过这个方法就可以完成这个工作。
int pagesize=8;//每页要显示的记录数
int absolutepage=1;//要设定的当前页
//计算当前页
if(Request["page"]!=null){
absolutepage=Int32.Parse(Request["page"]);
}
int pagecount;//
总页数
int rowstart;//数据库中分段记录开始的地方
//计算总记录数
ada.Fill(ds,"counts");
int rowcount=ds.Tables["counts"].Rows.Count;
//
计算总页数
int n=rowcount/pagesize;
if(rowcount==pagesize*n)
pagecount=n;
else
pagecount=n+1;
//
计算记录开始数,也就是分段的起始部分
rowstart=pagesize*(absolutepage-1);
//
把当前的记录段内的记录填加到DataSet中,然后就把数据绑定到某个容器控件,比如Repeater和DataList
ada.Fill(ds,rowstart,pagesize,"dtmemberx");
//用来显示每一页的连接,这个可以放到一个label里面
StringBuilder sb=new StringBuilder();
for(int i=1;i<=pagecount;i++){
sb.Append("--<a href='?page=");
sb.Append(i);
sb.Append("'>");
sb.Append(i);
sb.Append("</a>--");
}
//用来显示每一页的连接,这个可以放到一个DropDownList里面
ArrayList al=new ArrayList();
for(int i=1;i<=pagecount;i++){
al.Add(i);
}

上面就是程序的主要部分。一步步的做下来,其中原本在asp中由recordset自动完成的事情,在这里变成由我们自己完成。最后提供了两个页和页之间连接的方法。

 

总结

以上是生活随笔为你收集整理的2004-5-12+ 用DataSet实现分页的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。