Asp.net提供了三個功能強大的列表控件:DataGrid、DataList和Repeater控件,,相對DataGrid,,DataList和Repeater控件具有更高的樣式自定義性,很多時候我們喜歡使用DataList或Repeater控件來顯示數據,,但是Repeater和DataList沒有分頁功能,,有時很不方便。
PagedDataSource類封裝了DataGrid控件的屬性,,從而使DataGrid控件可以執(zhí)行分頁,,它就是一個數據的容器,我們先把數據從數據庫中讀取出來放在這個容器中,,然后設置容器的屬性取出當前要顯示的頁上的部分數據,,然后將此部分數據再綁定到頁面上的顯示控件上。
下面實例是Repeater控件和HyperLink控件結合PagedDataSource類實現的數據分頁列表
數據功能實現源代碼:
//對用于分頁的類的引用
PagedDataSource pds=new PagedDataSource();
pds.DataSource=dt.DefaultView;//設置數據源(DataTable類型)
pds.AllowPaging=true;
//第頁顯示的行數
pds.PageSize=18;
//設置當前頁
if(Pageindex<1) Pageindex=1;
pds.CurrentPageIndex=Pageindex-1;
rpt_NewsList.DataSource=pds;
rpt_NewsList.DataBind();
//顯示頁碼
ltl_RecordCount.Text = pds.DataSourceCount.ToString();
ltl_PageCount.Text = pds.PageCount.ToString();
ltl_Pageindex.Text = Pageindex.ToString();
ltl_Jump.Text = Jump_List (pds.PageCount , Pageindex , L_Manage);
//顯示上下翻頁(URL后面跟的參數自已跟據需要定義)
lbn_First.ToolTip = "跳轉到首頁";
lbn_First.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page=1";
lbn_Prev.ToolTip = "跳轉到上一頁";
lbn_Prev.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex-1);
lbn_Next.ToolTip = "跳轉到下一頁";
lbn_Next.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex+1);
lbn_Last.ToolTip = "跳轉到最后一頁";
lbn_Last.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+pds.PageCount.ToString();
//確定鏈接的顯示方式
if(Pageindex<=1 && pds.PageCount<=1)
{
lbn_First.NavigateUrl = "";
lbn_Prev.NavigateUrl = "";
lbn_Next.NavigateUrl = "";
lbn_Last.NavigateUrl = "";
}
if(Pageindex<=1 && pds.PageCount>1)
{
lbn_First.NavigateUrl = "";
lbn_Prev.NavigateUrl = "";
}
if(Pageindex >= pds.PageCount)
{
lbn_Next.NavigateUrl = "";
lbn_Last.NavigateUrl = "";
}
/// <summary>
/// 計算分頁跳轉
/// </summary>
/// <param name="Pagecount">頁面數</param>
/// <returns>string</returns>
private string Jump_List(int Pagecount , int Pageindex , long L_Manage)
{
StringBuilder sb = new StringBuilder ();
sb.Append ("<select id=\"Page_Jump\" name=\"Page_Jump\" onchange=\"window.location='"+ Request.CurrentExecutionFilePath +"?page='+ this.options[this.selectedIndex].value + '&Org_ID="+ L_Manage +"';\">");
for(int i = 1 ; i <= Pagecount ; i++)
{
if(Pageindex == i)
sb.Append ("<option value='"+ i +"' selected>"+ i +"</option>");
else
sb.Append ("<option value='"+ i +"'>"+ i +"</option>");
}
sb.Append ("</select>");
return sb.ToString ();
}
動行顯示效果如圖:
PagedDataSource 類的部分公共屬性:
AllowCustomPaging 獲取或設置指示是否啟用自定義分頁的值,。
AllowPaging 獲取或設置指示是否啟用分頁的值,。
Count 獲取要從數據源使用的項數,。
CurrentPageIndex 獲取或設置當前頁的索引。
DataSource 獲取或設置數據源,。
DataSourceCount 獲取數據源中的項數,。
FirstIndexInPage 獲取頁中的第一個索引。
IsCustomPagingEnabled 獲取一個值,,該值指示是否啟用自定義分頁,。
IsFirstPage 獲取一個值,該值指示當前頁是否是首頁,。
IsLastPage 獲取一個值,,該值指示當前頁是否是最后一頁。
IsPagingEnabled 獲取一個值,,該值指示是否啟用分頁,。
IsReadOnly 獲取一個值,該值指示數據源是否是只讀的,。
IsSynchronized 獲取一個值,,該值指示是否同步對數據源的訪問(線程安全)。
PageCount 獲取顯示數據源中的所有項所需要的總頁數,。
PageSize 獲取或設置要在單頁上顯示的項數,。
VirtualCount 獲取或設置在使用自定義分頁時數據源中的實際項數。
---------------------------------------------------------------------