·天新网首页·加入收藏·设为首页
首页|笔记本|手机|数码相机|摄像机|MP3/MP4|主板|内存|显示器|办公|打印机|下载|开发|汽车|学院|业界
硬件|台式机|数码|数字家庭|投影仪|GPS/CPU|显卡|硬盘|服务器|网络|一体机|驱动|源码|游戏|考试|报价
您现在的位置:天新网 > 软件开发 > .Net开发 > C#
C#中实现DataGrid双向排序
http://dev.21tx.com 2005年06月02日 爱雪儿工作室

  在.netDataGrid 虽然有排序的功能,但并不支持双向的排序。用到了,看了些相关的帖子,自己尝试了一种方法,竟然也行得通,主要是用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#的WinForm中制作饼状图和柱状图
下一篇: Visual C#中调用Windows服务初探

Google
 
热点文章
关于我们 | 联系我们 | 广告服务 | 工作机会 | 版权声明 | 欢迎投稿 | 网站地图
Copyright © 2000-2008 , www.21tx.com , All Rights Reserved .
© 晨新科技 版权所有 Created by TXSite.net