首 页 | 报价 | 活动 | 硬件 | 数码 | 整机 | 手机 | 新闻 | DIY | 导购 | 学院 | 专题 | 市场地图 | 商家名录 | 商情 | 论坛 | 下载 | 电视 | 算命 | 读心术 | 游戏
您现在的位置: 首页>学院>开发平台>VC/C#>正文
C#中实现DataGrid双向排序
文章来源:天极网 文章作者: 发布时间:2007-04-23


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

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

    }

   }

  }进入讨论组讨论。
精彩推荐     
关于我们 | 广告服务 | 建站服务 | 招贤纳士 | 会员服务 | 网站地图 | RSS订阅 | 联系我们

实名:中原硅谷网、电脑报价、电脑硬件报价 客服电话:0371-63659150

中原硅谷网 WWW.ZZIT.COM.CN&WWW.ZZ-IT.COM
2003-2007 版权所有