datagrid点击标题进行排序
步骤:
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点击标题进行排序的更多相关文章
- easyui datagrid 点击列表头排序出现错乱的原因
之前我的导师,也就是带我的同事,使用datagrid,发现点击列表头排序出现乱序,按理说只有顺序和逆序两种排序结果.因为他比较忙,当时没解决,把排序禁掉了,后来又要求一定要排序,所以他交给我. 一开始 ...
- PB 点击标题行排序和双击打开编辑页面共存不冲突的方法
根据doubleclicked() 事件的参数 row 进行判断 大于0才进入编辑页面(不能用getrow()事件获取行id,双击标题行获取的是1) if row>0 then event ue ...
- PB 数据窗口点击标题不能排序的一个原因
标题必须和数据行名称一致,如 数据行列名为:num ,标题行必须为 num_t 才可以
- FineReport实现根据点击次数奇偶性排序的方法
使用FineReport报表软在进行排序的时,很多时候您可能想实现根据点击的次数进行升降序排序,也就是说点击第一次点击标题升序排序,再次点击就降序,以此类推,而不是通过选择升序进行升序排列,选择降序进 ...
- DataGrid 使用模型列后实现点击列名称排序
DataGrid 使用模型列后实现点击列名称排序 代码如下: <DataGridTemplateColumn Header="型 号" SortMemberPath=&quo ...
- [转]C# ListView 单击标题实现排序(在转载的基础上有所完善)
using System; using System.Collections; using System.Windows.Forms; //在转载的基础上有所完善 namespace TDRFacto ...
- [WPF]ListView点击列头排序功能实现
[转] [WPF]ListView点击列头排序功能实现 这是一个非常常见的功能,要求也很简单,在Column Header上显示一个小三角表示表示现在是在哪个Header上的正序还是倒序就可以了. ...
- 解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题
原文:解决IsEditable="True"的ComboBox在DataGrid中点击一次不能选中行的问题 此方法很笨拙,并不推荐使用!!! 此方法很笨拙,并不推荐使用!!! 此方 ...
- QT中Qtableview视图表格中点击表头进行排序
用QT写了一个小工具,主要是对Excel中大量的数据进行计算和显示. 写了有一段时间,然后断断续续的做一些修改和完善. 因为要显示的数据有多列,很自然的会想到要能够对显示的数据进行排序.如果直接操作m ...
随机推荐
- 关于Visual Studio 2013 编译 multi-byte character set MFC程序出现 MSB8031 错误的解决办法
转自:http://blog.csdn.net/xiaochunzao/article/details/16987703 Visual Studio 2013 编译旧的 multi-byte char ...
- HttpClient 3.X 4.3 4.x超时设置
HttpClient 4.3.HttpClient这货和Lucene一样,每个版本的API都变化很大,这有点让人头疼.就好比创建一个HttpClient对象吧,每一个版本的都不一样, 3.X是这样的 ...
- 隐藏<input type="file"> 实现点击div或图片打开文件选择路径
HTML: <input type="file" style="display:none" id="addfile-btn"> ...
- http协议之request
一.请求的基本格式 请求的基本格式包括请求行,请求头,请求实体三部分.例如:GET /img/bd_logo1.png HTTP/1.1Accept: */*Referer: http://www.b ...
- NYOJ之括号配对问题
括号配对问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在,有一行括号序列,请你检查这行括号是否配对. 输入 第一行输入一个数N(0<N&l ...
- CentOS7下Firewall防火墙配置用法详解
官方文档地址: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide ...
- TIME_WAIT连接过多解决办法
问题起因: 自己开发了一个服务器和客户端,通过短连接的方式来进行通讯,由于过于频繁的创建连接,导致系统连接数量被占用,不能及时释放.看了一下18888,当时吓到了. 现象: 1.外部机器不能正常连接S ...
- SQL分页存储过程——表名、返回的列、排序字段、排序类型、条件、页尺寸、页码
ALTER PROCEDURE [dbo].[SP_LGY_ICU_PAGECUT] ), -- 表名 ) = '*', -- 需要返回的列 )='''', -- 排序的欄位名 , -- 設置排序類型 ...
- 【翻译十八】java-并发之锁对象
Lock Objects Synchronized code relies on a simple kind of reentrant lock. This kind of lock is easy ...
- catch that cow (bfs 搜索的实际应用,和图的邻接表的bfs遍历基本上一样)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 38263 Accepted: 11891 ...