DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果
?實(shí)現(xiàn)DataList或Repeater控件的分頁(yè)顯示有幾種方法:
?1、寫(xiě)一個(gè)方法或存儲(chǔ)過(guò)程,根據(jù)傳入的頁(yè)數(shù)返回需要顯示的數(shù)據(jù)表(DataTable)
?2、使用PagedDataSource類(lèi)
???? 本篇文章主要說(shuō)怎么使用PagedDataSource類(lèi)實(shí)現(xiàn)DataList和Repeater控件的分頁(yè)顯示。DataGrid控件內(nèi)部也使用了PagedDataSource類(lèi),PagedDataSource 類(lèi)封裝 DataGrid 控件的屬性,這些屬性使 DataGrid 可以執(zhí)行分頁(yè)。
?PagedDataSource 類(lèi)的部分公共屬性:
?AllowCustomPaging ?獲取或設(shè)置指示是否啟用自定義分頁(yè)的值。
?AllowPaging ??獲取或設(shè)置指示是否啟用分頁(yè)的值。
?Count ???獲取要從數(shù)據(jù)源使用的項(xiàng)數(shù)。
?CurrentPageIndex ??獲取或設(shè)置當(dāng)前頁(yè)的索引。
?DataSource ??獲取或設(shè)置數(shù)據(jù)源。
?DataSourceCount ??獲取數(shù)據(jù)源中的項(xiàng)數(shù)。
?FirstIndexInPage ??獲取頁(yè)中的第一個(gè)索引。
?IsCustomPagingEnabled ?獲取一個(gè)值,該值指示是否啟用自定義分頁(yè)。
?IsFirstPage ??獲取一個(gè)值,該值指示當(dāng)前頁(yè)是否是首頁(yè)。
?IsLastPage ??獲取一個(gè)值,該值指示當(dāng)前頁(yè)是否是最后一頁(yè)。
?IsPagingEnabled ??獲取一個(gè)值,該值指示是否啟用分頁(yè)。
?IsReadOnly ??獲取一個(gè)值,該值指示數(shù)據(jù)源是否是只讀的。
?IsSynchronized ??獲取一個(gè)值,該值指示是否同步對(duì)數(shù)據(jù)源的訪問(wèn)(線程安全)。
?PageCount ??獲取顯示數(shù)據(jù)源中的所有項(xiàng)所需要的總頁(yè)數(shù)。
?PageSize ??獲取或設(shè)置要在單頁(yè)上顯示的項(xiàng)數(shù)。
?VirtualCount ??獲取或設(shè)置在使用自定義分頁(yè)時(shí)數(shù)據(jù)源中的實(shí)際項(xiàng)數(shù)。
????? 這些屬性是否和DataGrid的屬性很相似?沒(méi)錯(cuò),DataGrid控件就是使用PagedDataSource類(lèi)來(lái)實(shí)現(xiàn)數(shù)據(jù)分頁(yè)顯示的 。下面舉個(gè)使用PagedDataSource類(lèi)實(shí)現(xiàn)DataList和Repeater控件的分頁(yè)顯示的例子:
?{
?OleDbConnection?objConn=new?OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;?Data?Source=c:\test.mdb");
?OleDbDataAdapter?objCommand=new?OleDbDataAdapter("select?*?from?Users",objConn);
?DataSet?ds=new?DataSet();
?objCommand.Fill(ds);
?//對(duì)PagedDataSource?對(duì)象的相關(guān)屬性賦值
?PagedDataSource?objPds?=?new?PagedDataSource();
?objPds.DataSource?=?ds.Tables[0].DefaultView;
?objPds.AllowPaging?=?true;
?objPds.PageSize?=?5;
?int?CurPage;
?//當(dāng)前頁(yè)面從Page查詢(xún)參數(shù)獲取
?if?(Request.QueryString["Page"]?!=?null)
??CurPage=Convert.ToInt32(Request.QueryString["Page"]);
?else
??CurPage=1;
?objPds.CurrentPageIndex?=?CurPage-1;?
?lblCurrentPage.Text?=?"Page:?"?+?CurPage.ToString();
?if?(!objPds.IsFirstPage)
??lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath?+?"?Page="?+?Convert.ToString(CurPage-1);
?if?(!objPds.IsLastPage)
??lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+?"?Page="?+?Convert.ToString(CurPage+1);
?//把PagedDataSource?對(duì)象賦給Repeater控件
?Repeater1.DataSource=objPds;
?Repeater1.DataBind();
?}
?
這樣就可以很簡(jiǎn)單的實(shí)現(xiàn)DataList和Repeater控件的分頁(yè)顯示。但這樣做有個(gè)缺點(diǎn),就是每次都要把所有頁(yè)的數(shù)據(jù)Select出來(lái),DataGrid也是這樣,這樣會(huì)降低一點(diǎn)效率(大多時(shí)候體會(huì)不出來(lái)差別);如果使用第一種方法就可以只Select出當(dāng)前頁(yè)的數(shù)據(jù)(實(shí)現(xiàn)方法請(qǐng)查看有關(guān)文章)用上面的方法是最方便的實(shí)現(xiàn)DataList分頁(yè)的。只不過(guò),效率看似有點(diǎn)底啊。。那個(gè)AspNetPage太難用了。不知道有沒(méi)有更好的方法了,即簡(jiǎn)單又高效一點(diǎn)的。。轉(zhuǎn):http://blog.csdn.net/fzzf/archive/2005/11/28/538603.aspx
轉(zhuǎn)載于:https://www.cnblogs.com/Dragon-China/archive/2007/09/10/888635.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C语言-----职工信息管理系统
- 下一篇: 2021软件测试、自动化测试、面试题整理