日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果

發(fā)布時(shí)間:2023/12/10 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataList分页技术-- PagedDataSource类实现DataList和Repeater的分页效果 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Asp.net提供了三個(gè)功能強(qiáng)大的列表控件:DataGrid、DataList和Repeater控件,但其中只有DataGrid控件提供分頁(yè)功能。相對(duì)DataGrid,DataList和Repeater控件具有更高的樣式自定義性,所以很多時(shí)候我們喜歡使用DataList或Repeater控件來(lái)顯示數(shù)據(jù)。


?實(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è)顯示的例子:

?public?void?Page_Load(Object?src,EventArgs?e)?
?
{
?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)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。