[英]gridview paging using dataset
我有一個ASP.NET Web應用程序(C#),可以從數據源獲取一些信息並將其顯示在gridview中。 我想啟用分頁,但是由於某種原因,分頁不起作用。 我在網上進行了一些研究,發現使用數據集時分頁的方式有所不同。 當我單擊頁碼時,它會刷新,並說沒有要顯示的記錄。 我將這個功能稱為按鈕的點擊功能:
bindGrid(cmd);
這是我的綁定方法:
private void bindGrid(OracleCommand comm)
{
OracleDataAdapter adapter = new OracleDataAdapter(comm);
DataSet ds = new DataSet();
ds.Tables.Add("Results");
adapter.Fill(ds.Tables["Results"]);
grd.DataSource = ds;
grd.DataBind();
}
分頁方法:
protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grd.PageIndex = e.NewPageIndex;
grd.DataBind();
}
我應該如何對數據集進行分頁? 有人可以幫忙嗎?
您還需要獲取數據:)
所以代替這個:
protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grd.PageIndex = e.NewPageIndex;
grd.DataBind();
}
您應該使用:
protected void grdResults_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grd.PageIndex = e.NewPageIndex;
//Create command
bindGrid(comm);
}
取而代之的grd.DataBind()
在您的分頁方法調用bindGrid()
或者最好使用一些內置的“業務對象”進行數據綁定,例如ObjectDataSource
執行分頁的最簡單方法是在GridView中設置AllowPaging =“ yes”,並且在后面的代碼中不執行任何操作。 GridView將自行瀏覽其數據集。 不要重新綁定。
這對於小型數據集來說很好,但對於電話簿而言則不太好。 正如Tadas所說,ObjectDataSource是在服務器端自己處理分頁的一種方式。 使用ObjectDataSource,您將根本不需要DataBind。 控件可以處理。 但是,您確實需要在對象上提供Select方法(通常是靜態的),並且它需要具有第一行和頁面大小的參數(將這些參數設置為ObjectDataSource上的屬性)。 因此,您將需要實現Count方法以返回完整的數據集大小。 否則分頁將不起作用。 通過這種方式使用ObjectDataSource,您可以將分頁的負擔轉移到數據層,頁面的加載速度會更快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.