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实现分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安全:形式盖过内涵?
- 下一篇: 发现一个问题,可能是Sql Expres