好了,請原諒,因爲我可能會有點有時木鴨...分頁大量的數據在GridView
我在asp.net一個GridView將被拉回不少一千個記錄。除了事物的性能方面,這一切都很好。我將我的GridView綁定到數據集,並將查詢中的每條記錄都拉回來。我想改變這個,這樣gridview只會拉回它當前正在顯示的記錄,然後當用戶移動到下一個頁面時,它會得到下一個數據夾點。
下面是我通常綁定我的網格瀏覽和處理分頁和排序,這對我的數據量很小的情況非常有效,但對於大數據量則不太好。我使用SubSonic作爲我的DAL,這很酷。任何人都可以在正確的方向上指出我如何最好地實現如上所述的分頁?
在此先感謝...
public SortDirection SortDir
{
get
{
if (ViewState["sortDirection"] == null)
{
ViewState["sortDirection"] = SortDirection.Ascending;
} return (SortDirection)ViewState["sortDirection"];
}
set
{
ViewState["sortDirection"] = value;
}
}
DataSet ds = new DataSet();
DataView dv = new DataView();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindGrid();
GridView1.DataSource = dv;
GridView1.DataBind();
}
}
private DataView BindGrid()
{
ds = new Query(AnthemWeb.DAL.Item.Schema).ExecuteDataSet();
if (ViewState["sortExpr"] != null)
{
dv = new DataView(ds.Tables[0]);
dv.Sort = (string)ViewState["sortExpr"];
}
else
{
dv = ds.Tables[0].DefaultView;
}
return dv;
}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
GridView1.DataSource = BindGrid();
GridView1.DataBind();
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string stExp = e.SortExpression;
string stDir = string.Empty;
if (SortDir == SortDirection.Ascending)
{
SortDir = SortDirection.Descending;
stDir = "DESC";
}
else
{
SortDir = SortDirection.Ascending;
stDir = "ASC";
}
ViewState["sortExpr"] = e.SortExpression + " " + stDir;
GridView1.DataSource = BindGrid();
GridView1.DataBind();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
int selectedRowIndex;
selectedRowIndex = GridView1.SelectedIndex;
GridViewRow row = GridView1.Rows[selectedRowIndex];
string ID = row.Cells[0].Text;
Response.Redirect("customer-details.aspx?ID=" + ID, false);
}
非常感謝球員的回覆。我正在嘗試在Subsonic中使用分頁方法,但是我現在遇到的問題是gridview上的分頁控件沒有出現? 我正在創建一個集合並將gridview綁定到這個。我傳入.Paged(pageIndex,6)。 allowpaging在gridview上設置,我有一個方法來處理GridView1_PageIndexChanging事件 - BindPagedData(e.NewPageIndex,6);無法通過分頁進行移動控制 - 有120個記錄用於測試。 我是用完全錯誤的方式來解決這個問題的嗎?謝謝你提供的所有幫助。 – macou 2009-07-20 03:45:19