步骤:
 1.页面上首先设置datagrid的AllowSorting="true",以及指定排序方法OnSortCommand="DataGrid1_SortCommand"
2.在列的header处指定排序字段如SortExpression="keyword"
3.后台cs部分本例使用了ViewState["orderBy"]来保存排序字段和规则( SetSql();是我实例中的datagrid绑定方法)
 PS:绑定datagrid后,要修改列SortExpression中相反的排序顺序



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--> 1   protected void DataGrid1_SortCommand(object source, DataGridSortCommandEventArgs e)
 2     {
 3 
 4         ViewState["orderBy"] = e.SortExpression;
 5         SetSql();
 6         //找到排序的列,并修改把它的排序属性 
 7         DataGridColumn clm = null; 
 8         for (int i = 0; i < DataGrid1.Columns.Count; i++)
 9         {
10             if (DataGrid1.Columns[i].SortExpression == e.SortExpression)
11             {
12                 clm = DataGrid1.Columns[i];
13                 break;
14             }
15         }
16         if (clm == null) return;
17 
18         if (e.SortExpression.ToLower().IndexOf("desc") > 0)
19         {
20             clm.SortExpression = e.SortExpression.ToLower().Replace("desc", "asc");
21         }
22         else
23         {
24             if (e.SortExpression.ToLower().IndexOf("asc") > 0)
25             {
26                 clm.SortExpression = e.SortExpression.ToLower().Replace("asc", "desc");
27             }
28             else
29             {
30                 clm.SortExpression = e.SortExpression.ToLower() + " desc";
31             }
32         }
33        
34     }

特别提示:
i.OnSortCommand、OnSelectCommand、OnDeleteCommand和OnUpdateCommand方法是在OnItemCommand执行之后起作用。如DataGrid1_ItemCommand中的处理是要排除Header的,有必要做如下处理:
 
CodeDataGrid1_ItemCommand方法



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
    {
        if (e.Item.ItemType !=  ListItemType.Item||e.Item.ItemType!=ListItemType.AlternatingItem)
            return;
   }

ii.排序后,重新绑定datagrid也是不可缺少的功课。

附录:
MS对DataGrid、DataList和Repeater的ListItemType,自动有AlternatingItem的解释 Even if you have not created an in your Repeater control, every other row still has an ItemType of ListItemType.. Therefore, you must check for both ListItemType.Item and ListItemType.AlternatingItem to process every

datagrid点击标题进行排序的更多相关文章

  1. easyui datagrid 点击列表头排序出现错乱的原因

    之前我的导师,也就是带我的同事,使用datagrid,发现点击列表头排序出现乱序,按理说只有顺序和逆序两种排序结果.因为他比较忙,当时没解决,把排序禁掉了,后来又要求一定要排序,所以他交给我. 一开始 ...

  2. PB 点击标题行排序和双击打开编辑页面共存不冲突的方法

    根据doubleclicked() 事件的参数 row 进行判断 大于0才进入编辑页面(不能用getrow()事件获取行id,双击标题行获取的是1) if row>0 then event ue ...

  3. PB 数据窗口点击标题不能排序的一个原因

    标题必须和数据行名称一致,如 数据行列名为:num ,标题行必须为 num_t 才可以

  4. FineReport实现根据点击次数奇偶性排序的方法

    使用FineReport报表软在进行排序的时,很多时候您可能想实现根据点击的次数进行升降序排序,也就是说点击第一次点击标题升序排序,再次点击就降序,以此类推,而不是通过选择升序进行升序排列,选择降序进 ...

  5. DataGrid 使用模型列后实现点击列名称排序

    DataGrid 使用模型列后实现点击列名称排序 代码如下: <DataGridTemplateColumn Header="型 号" SortMemberPath=&quo ...

  6. [转]C# ListView 单击标题实现排序(在转载的基础上有所完善)

    using System; using System.Collections; using System.Windows.Forms; //在转载的基础上有所完善 namespace TDRFacto ...

  7. [WPF]ListView点击列头排序功能实现

    [转]   [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...

  8. 解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题

    原文:解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题 此方法很笨拙,并不推荐使用!!! 此方法很笨拙,并不推荐使用!!! 此方 ...

  9. QT中Qtableview视图表格中点击表头进行排序

    用QT写了一个小工具,主要是对Excel中大量的数据进行计算和显示. 写了有一段时间,然后断断续续的做一些修改和完善. 因为要显示的数据有多列,很自然的会想到要能够对显示的数据进行排序.如果直接操作m ...

随机推荐

  1. JS返回上一页

    <button  onclick="javascript:history.go(-1);">返回上一页</button> <button  oncli ...

  2. 1 mysql的安装

    win10 总之前期的步骤大概有:1下载安装:2 安装好后配置环境变量:3:登陆数据库 1:安装 mysql有安装版和直接解压就可以用的,据说大神都是安装的直接解压的,但鉴于自己是小白,就整了个安装版 ...

  3. map find 是线程安全的吗

    测试环境gcc4.8.2     iterator find ( const key_type& k ); const_iterator find ( const key_type& ...

  4. 重温WCF之数据契约和序列化(四)

    一.数据契约 1.使用数据协定可以灵活控制哪些成员应该被客户端识别. [DataContract] public class Employee { [DataMember] public string ...

  5. Pyqt phonon的使用

    本文是用Pyqt实现了下网上一个Qt版大牛关于phonon的介绍 Qt phonon地址:http://wenku.baidu.com/link?url=nH_dZ8lZbXHy8N5__8jAWLX ...

  6. 【叉积】【sdut 2508 图形密码】

    图形密码 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...

  7. GoLang文件增删遍历基本操作

    先学一学GO语言实用的一面. package main import ( "path/filepath" "flag" "os" " ...

  8. AJax中post与get请求注意事项

    在使用ajax提交表单时,一定要区分提交按钮的形式和数据表头的设置,实例如下: GET请求: HTML代码: <!doctype html> <html lang="en& ...

  9. 攻城狮在路上(肆)How tomcat works(三) 连接器:Connector

     在介绍中提到,Catalina中有两个主要的模块:连接器和容器.本章中你将会写一个可以创建更好的请求和响应对象的连接器,用来改进第2章中的程序.一个符合Servlet 2.3和2.4规范的连接器必须 ...

  10. 单图上传预览(uploadpreview )

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...