C#中实现DataGrid双向排序

王朝c#·作者佚名  2008-05-19
宽屏版  字体: |||超大  

在.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";

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有