Asp.net
使用 gridview asp.net 進行排序和分頁
我試圖讓 gridview 手動排序和分頁,但沒有成功。
問題是當使用者點擊他們想要排序的列時,它會對該頁面進行排序,但不會對 gridview 後面的數據源(數據視圖)進行排序。因此,當他們前進到不同的頁面時,他們的排序就會失去。幾乎我正在尋找一種實際上會對gridview後面的數據源進行排序的排序。這是我到目前為止所擁有的:
protected void GridView_OnSort(object sender, GridViewSortEventArgs e) { String sortExpression = e.SortExpression; if (GridViewSortDirection == SortDirection.Ascending) { DataView myDataView = new DataView(mybll.GetItemsOrdered()); myDataView.Sort = sortExpression + " DESC"; GridView.DataSource = myDataView; GridView.DataBind(); } else { DataView myDataView = new DataView(mybll.GetItemsOrdered()); myDataView.Sort = sortExpression + " ASC"; GridView.DataSource = myDataView; GridView.DataBind(); } }任何幫助,將不勝感激。謝謝。
將排序順序保存在 ViewState 中。
private const string ASCENDING = " ASC"; private const string DESCENDING = " DESC"; public SortDirection GridViewSortDirection { get { if (ViewState["sortDirection"] == null) ViewState["sortDirection"] = SortDirection.Ascending; return (SortDirection) ViewState["sortDirection"]; } set { ViewState["sortDirection"] = value; } } protected void GridView_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = e.SortExpression; if (GridViewSortDirection == SortDirection.Ascending) { GridViewSortDirection = SortDirection.Descending; SortGridView(sortExpression, DESCENDING); } else { GridViewSortDirection = SortDirection.Ascending; SortGridView(sortExpression, ASCENDING); } } private void SortGridView(string sortExpression,string direction) { // You can cache the DataTable for improving performance DataTable dt = GetData().Tables[0]; DataView dv = new DataView(dt); dv.Sort = sortExpression + direction; GridView1.DataSource = dv; GridView1.DataBind(); }為什麼不想使用現有的排序功能?您可以隨時自定義它。
在 MSDN的 GridView Web 伺服器控制項中對數據進行排序
這是一個自定義範例:
<http://www.netomatix.com/development/GridViewSorting.aspx>