学院首页>网络编程>C#.NET>C#中实现DataGrid双向排序

C#中实现DataGrid双向排序

作者:Sabine 来源:赛迪论坛 添加时间:2006-5-26 10:33:05

在.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";   }  } }
站内搜索