GridView手工排序

在asp.net 2.0中,如果是使用gridview的話,可以要對gridview進行排序的話,可以配合sqldatasource來使用,已經內建了排序的功能(即點列標題進行排序),但如果要配合其他數據源控件的話,則必須使用
自定義的排序方法了,今天學習到了如何用dataset搭配gridview的話,進行標題排序,現將其方法摘錄如下:
   首先,用一個方法將數據取出來,放到DATASET裏去,如下代碼
private DataSet GetData()

{

SqlConnection myConnection = new SqlConnection(ConnectionString);

SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM Categories", myConnection);

DataSet ds = new DataSet();

ad.Fill(ds);

return ds;

}
然後,對gridview進行如下設置
  <asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">
</asp:GridView>
 
   然後,其gridview_sorting的自定義過程如下,首先添加一個屬性
  public SortDirection GridViewSortDirection
{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}

   GridViewSortDirection 是一個簡單的屬性,用viewstate保存每次排序的方向
GridView1_Sorting的代碼如下:
  protected void GridView1_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);

}

}
  在這裏,首先得到用戶點擊要排序列的標題,然後判斷當前gridviewsortdirection的屬性值來判斷,如果已經是升序的話,則設置GridViewSortDirection爲降序,並調用一個sortgridview過程;否則默認是調用升序來排序;
  而sortgridview方法如下:
  private void SortGridView(string sortExpression,string direction)
{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExpression + direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}
  在這裏,接收兩個參數,分別是sortExpression和direction,然後構成dataview進行排序,十分好理解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章