C#中实现DataGrid双向排序

资讯 驱动中国 若水 303 次阅读 0 条评论
分享 Q

在.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"; 
} 
} 
}
排序 双向 实现 if e.SortExpression.T
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系 editor@qudong.com
本文价值 成为第一个评分的人
登录后为本文打分
网友评论0 条评论
正在回复 的评论取消
评论加载中…
🔐

登录后参与互动

评论、点赞均可赚积分
连续签到、邀请好友也有奖励 🎁

电脑端: 微信扫码登录 微信内: 一键登录

微信扫一扫

打开微信「扫一扫」,分享本文到朋友圈或好友