程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#中實現DataGrid雙向排序

C#中實現DataGrid雙向排序

編輯:C#基礎知識

  在.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<DataGrid1.Columns.Count;i++)
 {
  if(DataGrid1.Columns[i].SortExpression == e.SortExpression )
  {
   clm = DataGrid1.Columns[i];
   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";
  }
 }
} 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved