C#中实现DataGrid双向排序

本文介绍了在.NET中DataGrid控件不支持双向排序的问题,提供了一种解决方案,通过DataGrid.Attributes存储排序参数并在onSortCommand事件中修改DataGridColumn的SortExpression,实现了双向排序的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 在.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#中实现DataGrid双向排序

-->  在.Net 中 DataGrid 虽然有排序的功能,但并不支持双向的排...
-->  第三章: 类属性    使用过RAD开发工具的一定inspecto...
-->  在微软的.NET推出后,关于C#的有关文章也相继出现,作为微...
-->  C# 用户经常提出两个问题:“我为什么要另外编写代码来使用...
-->  对于如何使用 WebRequest 和 WebResponse 类在 URI 上生成...
-->文/menhal  保证应用程序的安全应当从编写第一行代码的时候开...
-->冒泡排序    学语言要花大力气学数据结构和算法。 u...
-->  简介  Microsoft.NET Framework 精简版的一个主要功能是...
-->  Xml全称可扩展标记语言(extensible marked language),这...
-->NET Framework: 就是微软Web Services 引擎  有许多程序设计...
--> 大多数 ADO.NET 数据提供程序使用连接池,以提高围绕 Microso...
-->  Cache 即高速缓存 ,我想很多人对他的第一印象一定像我一样...
-->  在开发软件应用程序过程中,随着应用程序的开发,会出现重...
-->//名称空间 using System; using System.Security.Cryptograph...
-->  当我们需要使用的对象很复杂或者需要很长时间去构造,这时...
-->  在使用ASP的时候,我们时常要借助第三方控件来实现一些图象...
-->  版本控制是一个过程,它以兼容的方式对组件进行不断的改进...
--> 一个接口定义一个协定。实现接口的类或结构必须遵守其协定。接...
-->  在DataGrid中一般只能单个获取每一行的数据,若要批量获取...
-->  首先我们将从一个示范开始,在这个示范中我将使用一个按钮...
-->  2.下面这个方法是自己写的,翻页事件中调用。 private vo...
-->  要想实现翻页后继续排序,实现这样的效果:   比如共 15笔...
-->  一、前言    .NET框架是Windows应用领域中一个非常新的...
-->共享对象类别库  ASP.NET 是共享对象类别库中的一员,ASP.NE...
-->  大名鼎鼎的 Crystal Reports(水晶报表)已内嵌为微软 Vis...
-->  1、分析一下番茄花园的歌来源: PageUrl = "http://tomato...
-->  引言    在 Web 开发人员的最常见任务之中,有一项任务...
--> 1,将 Text 属性设置为将自己要连接时候的文字。 2,设置 L...
-->  介绍  很多有着不同开发背景得人都会比较熟悉单例模式。...
--> 数据类型 数据类型简写 标准命名举例 ...
-->  ADO.NET 为数据在内存中的操作和储存提供了一种新模式。因...
-->  继承概述   面向对象编程 (OOP) 语言的一个主要功能就是...
-->  在Windows Mobile软件开发中.Net正扮演着日益重要的角色,...
-->  什么是 .NET 框架?   Microsoft .NET 框架是生成、部署...
--> 附录 所支持平台的例外情况 命名空间 项 XPPro XPHome 20...
--> 新的 DataGridView 是 .NET 2.0 中的一个新控件,是针对 .NET...
-->  当然,这里所谓的文件是指完整的文件名称,至于文件的内容...
-->  大家一定对Web Service模型在.NET中的重要性都有所了解,那...
-->  一、资源文件的定义   简单点的说法就是程序中可以使用...
-->  本文将讨论.NET的应用程序域,并且它们是如何对ASP.NET的执...
-->  微软公司推出的ASP.NET和C# 编译器使IT业界感到了惊讶。现...
-->  在经历了N次安装CTP不成功的惨痛经历之后(N>4),我终于等...
-->  Viusal Studio2005极大地丰富了它的库,可以说是科研背后的...
-->   早以前的dos应用程序中,我们经常会用命令行参数执行应用...
--> 类声明定义新的引用类型。一个类可以从另一个类继承,并且可以...
-->  在本文的第一部分,我们研究了如何设定DataGrid Web控件的...
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值