在.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") > 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++)>