博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#中实现DataGrid双向排序

Posted on 2006-07-07 15:53  Csunny  阅读(304)  评论(0)    收藏  举报
/*在.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 == nullreturn

 
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"
  }
 
 }
 
}