电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > C语言 > 正文
C#中实现DataGrid双向排序
C#中实现DataGrid双向排序
2008-7-11 19:48:25  文/佚名   出处:电脑爱好者   

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

  } 

 } 

}
  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    用C语言实现的闹钟程序
    C#实现Windows关机的代码
    用动态规划法求组和数的算法
    循环结构程序具有哪3个组成部分?
    const成员函数有什么特点?
    c语言求平均分程序
    一道关于指针的C语言题
    C语言求3个整数的最大公约数
    BM模式匹配算法C语言实现
    从键盘输入任意5个4位整数存入数组a…
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号