熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

實現DataList和Repeater控件的分頁顯示

2013-11-13 10:26:49  來源: .NET編程 
    提供了三個功能強大的列表控件DataGridDataList和Repeater控件但其中只有DataGrid控件提供分頁功能相對DataGridDataList和Repeater控件具有更高的樣式自定義性所以很多時候我們喜歡使用DataList或Repeater控件來顯示數據
  
  
   實現DataList或Repeater控件的分頁顯示有幾種方法
   寫一個方法或存儲過程根據傳入的頁數返回需要顯示的數據表(DataTable)
   使用PagedDataSource類
  
   本篇文章主要說怎麼使用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 srcEventArgs e)
   {
   OleDbConnection objConn=new OleDbConnection(@Provider=MicrosoftJetOLEDB; Data Source=c:\testmdb);
   OleDbDataAdapter objCommand=new OleDbDataAdapter(select * from UsersobjConn);
   DataSet ds=new DataSet();
   objCommandFill(ds);
  
   //對PagedDataSource 對象的相關屬性賦值
   PagedDataSource objPds = new PagedDataSource();
   objPdsDataSource = dsTables[]DefaultView;
   objPdsAllowPaging = true;
   objPdsPageSize = ;
   int CurPage;
  
   //當前頁面從Page查詢參數獲取
   if (RequestQueryString[Page] != null)
   CurPage=ConvertToInt(RequestQueryString[Page]);
   else
   CurPage=;
  
   objPdsCurrentPageIndex = CurPage;
   lblCurrentPageText = Page: + CurPageToString();
  
   if (!objPdsIsFirstPage)
   lnkPrevNavigateUrl=RequestCurrentExecutionFilePath + ?Page= + ConvertToString(CurPage);
  
   if (!objPdsIsLastPage)
   lnkNextNavigateUrl=RequestCurrentExecutionFilePath+ ?Page= + ConvertToString(CurPage+);
  
   //把PagedDataSource 對象賦給Repeater控件
   RepeaterDataSource=objPds;
   RepeaterDataBind();
   }
   這樣就可以很簡單的實現DataList和Repeater控件的分頁顯示但這樣做有個缺點就是每次都要把所有頁的數據Select出來DataGrid也是這樣這樣會降低一點效率(大多時候體會不出來差別)如果使用第一種方法就可以只Select出當前頁的數據(實現方法請查看有關文章)

From:http://tw.wingwit.com/Article/program/net/201311/13655.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.