DataGrid 中双向排序的一种办法

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

 1<datagrid1.columns.count;i++) )="" break;="" clm="DataGrid1.Columns[i];" if(clm="null)" if(datagrid1.columns[i].sortexpression="e.SortExpression" if(e.sortexpression.tolower().indexof("desc")="" return;="" {="" }=""> 0)   
 2{   
 3clm.SortExpression = e.SortExpression.ToLower().Replace("desc","asc");   
 4}   
 5else   
 6{   
 7if(e.SortExpression.ToLower().IndexOf("asc") &gt; 0)   
 8{   
 9clm.SortExpression = e.SortExpression.ToLower().Replace("asc","desc");   
10}   
11else   
12{   
13clm.SortExpression = e.SortExpression.ToLower() + " desc";   
14}   
15}   
16}</datagrid1.columns.count;i++)>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus