asp.net Repeater分頁執行個體(PageDataSource的使用)

來源:互聯網
上載者:User

Asp.net提供了三個功能強大的清單控制項:DataGrid、DataList和Repeater控制項,但其中只有DataGrid控制項提供分頁功能。相對DataGrid,DataList和Repeater控制項具有更高的樣式自訂性,所以很多時候我們喜歡使用DataList或Repeater控制項來顯示資料。

實現DataList或Repeater控制項的分頁顯示有幾種方法:
1、寫一個方法或預存程序,根據傳入的頁數返回需要顯示的資料表(DataTable)
2、使用PagedDataSource類(位於System.Web.UI.WebControls命名空間裡)

本篇文章主要說怎麼使用PagedDataSource類實現DataList和Repeater控制項的分頁顯示。DataGrid控制項內部也使用了PagedDataSource類,PagedDataSource 類封裝 DataGrid 控制項的屬性,這些屬性使 DataGrid 可以執行分頁。

PagedDataSource 類的部分公用屬性:
AllowCustomPaging 擷取或設定指示是否啟用自訂分頁的值。
AllowPaging 擷取或設定指示是否啟用分頁的值。
Count 擷取要從資料來源使用的項數。
CurrentPageIndex 擷取或設定當前頁的索引。
DataSource 擷取或設定資料來源。
DataSourceCount 擷取資料來源中的項數。
FirstIndexInPage 擷取頁中的第一個索引。
IsCustomPagingEnabled 擷取一個值,該值指示是否啟用自訂分頁。
IsFirstPage 擷取一個值,該值指示當前頁是否是首頁。
IsLastPage 擷取一個值,該值指示當前頁是否是最後一頁。
IsPagingEnabled 擷取一個值,該值指示是否啟用分頁。
IsReadOnly 擷取一個值,該值指示資料來源是否是唯讀。
IsSynchronized 擷取一個值,該值指示是否同步對資料來源的訪問(安全執行緒)。
PageCount 擷取顯示資料來源中的所有項所需要的總頁數。
PageSize 擷取或設定要在單頁上顯示的項數。
VirtualCount 擷取或設定在使用自訂分頁時資料來源中的實際項數。

這些屬性是否和DataGrid的屬性很相似?沒錯,DataGrid控制項就是使用PagedDataSource類來實現資料分頁顯示的 。

下面舉個使用PagedDataSource類實現DataList和Repeater控制項的分頁顯示的例子: 複製代碼 代碼如下: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);

//對PagedDataSource 對象的相關屬性賦值
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = ds.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 5;
int CurPage;

//當前頁面從Page查詢參數擷取
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="+ onvert.ToString(CurPage-1);

if (!objPds.IsLastPage)
lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+"?Page="+Convert.ToString(CurPage+1);

//把PagedDataSource 對象賦給Repeater控制項
Repeater1.DataSource=objPds;
Repeater1.DataBind();
}

這樣可以簡單實現Repeater分頁功能,但有個缺點就是每次把所有的資料查詢出來,如果資料量大的話,這樣效率就會比較低。此時用預存程序實現較好!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.