PagedDataSource類封裝了DataGrid控件的屬性,從而使DataGrid控件可以執(zhí)行分頁,它就是一個數(shù)據(jù)的容器,我們先把數(shù)據(jù)從數(shù)據(jù)庫中讀取出來放在這個容器中,然后設(shè)置容器的屬性取出當(dāng)前要顯示的頁上的部分?jǐn)?shù)據(jù),然后將此部分?jǐn)?shù)據(jù)再綁定到頁面上的顯示控件上。
下面實例是Repeater控件和HyperLink控件結(jié)合PagedDataSource類實現(xiàn)的數(shù)據(jù)分頁列表
數(shù)據(jù)功能實現(xiàn)源代碼:
//對用于分頁的類的引用
PagedDataSource pds=new PagedDataSource();
pds.DataSource=dt.DefaultView;//設(shè)置數(shù)據(jù)源(DataTable類型)
pds.AllowPaging=true;
//第頁顯示的行數(shù)
pds.PageSize=18;
//設(shè)置當(dāng)前頁
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后面跟的參數(shù)自已跟據(jù)需要定義)
lbn_First.ToolTip = "跳轉(zhuǎn)到首頁";
lbn_First.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page=1";
lbn_Prev.ToolTip = "跳轉(zhuǎn)到上一頁";
lbn_Prev.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex-1);
lbn_Next.ToolTip = "跳轉(zhuǎn)到下一頁";
lbn_Next.NavigateUrl=Request.CurrentExecutionFilePath+"?Org_ID="+ L_Manage +"&page="+(Pageindex+1);
lbn_Last.ToolTip = "跳轉(zhuǎn)到最后一頁";
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>
/// 計算分頁跳轉(zhuǎn)
/// </summary>
/// <param name="Pagecount">頁面數(shù)</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 獲取或設(shè)置指示是否啟用自定義分頁的值。
AllowPaging 獲取或設(shè)置指示是否啟用分頁的值。
Count 獲取要從數(shù)據(jù)源使用的項數(shù)。
CurrentPageIndex 獲取或設(shè)置當(dāng)前頁的索引。
DataSource 獲取或設(shè)置數(shù)據(jù)源。
DataSourceCount 獲取數(shù)據(jù)源中的項數(shù)。
FirstIndexInPage 獲取頁中的第一個索引。
IsCustomPagingEnabled 獲取一個值,該值指示是否啟用自定義分頁。
IsFirstPage 獲取一個值,該值指示當(dāng)前頁是否是首頁。
IsLastPage 獲取一個值,該值指示當(dāng)前頁是否是最后一頁。
IsPagingEnabled 獲取一個值,該值指示是否啟用分頁。
IsReadOnly 獲取一個值,該值指示數(shù)據(jù)源是否是只讀的。
IsSynchronized 獲取一個值,該值指示是否同步對數(shù)據(jù)源的訪問(線程安全)。
PageCount 獲取顯示數(shù)據(jù)源中的所有項所需要的總頁數(shù)。
PageSize 獲取或設(shè)置要在單頁上顯示的項數(shù)。
VirtualCount 獲取或設(shè)置在使用自定義分頁時數(shù)據(jù)源中的實際項數(shù)。