Asp.net

使用 gridview asp.net 進行排序和分頁

  • March 31, 2009

我試圖讓 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>

引用自:https://stackoverflow.com/questions/702600