C#中實現DataGrid雙向排序(轉)

ba發表於2007-08-15
C#中實現DataGrid雙向排序(轉)[@more@]在.net 中 DataGrid 雖然有排序的功能,但並不支援雙向的排序。用到了,看了些相關的帖子,自己嘗試了一種方法,竟然也行得通,主要是用 DataGrid.Attributes 存了一個引數,同時在onSortCommand中修改了DataGridColumn的SortExpression. 程式碼如下:

private void BindData()
{
 DataTable dt = .......;
 if(dt != null)
 {
  DataView dv = dt.DefaultView;
  if(DataGrid1.Attributes["SortBy"] != null)
  {
   dv.Sort = DataGrid1.Attributes["SortBy"];
  }

  DataGrid1.DataSource = dv;
  DataGrid1.DataBind();
 }
}

private void DataGridSort(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
 DataGrid1.Attributes["SortBy"] = sortstr;
 this.BindData();

 //找到排序的列,並修改把它的排序屬性

 DataGridColumn clm = null;

 for(int i=0;i  {
  if(DataGrid1.Columns.SortExpression == e.SortExpression )
  {
   clm = DataGrid1.Columns;
   break;
  }
 }

 if(clm == null) return;

 if(e.SortExpression.ToLower().IndexOf("desc") > 0)
 {
  clm.SortExpression = e.SortExpression.ToLower().Replace("desc","asc");
 }
 else
 {
  if(e.SortExpression.ToLower().IndexOf("asc") > 0)
  {
   clm.SortExpression = e.SortExpression.ToLower().Replace("asc","desc");
  }
  else
  {
   clm.SortExpression = e.SortExpression.ToLower() + " desc";
  }
 }
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-957752/,如需轉載,請註明出處,否則將追究法律責任。

相關文章