DataGrid自动排序
DataGrid是ASP.NET中非常重要的一个控件。它能方便的让我们实现编辑、排序功能;但是排序功能默认的是升序(ASC),能不能让DataGrid同时实现升降序排列呢?这篇文章将给你一个比较好的解决方法。
下面的例子将告诉你如何给DataGrid动态添加sortexpression 和 sortdirection 属性,并通过DataView使DataGird中的数据按照这两个属性排列。在这个例子中使用的DataGrid的sortexpression属性只需要在sortcommand事件中设置(和通常的排序一样),DataGrid的sortexpression 属性保存了最后一次用来排序的字段名称,DataGrid的sortdirection 属性保存了最后一次用来排序的字段排列方式(“ASC”或者“DESC”)
页面设计:
1. 在页面上添加一个DataGrid;
2. 设置DataGrid的AllowSorting属性为True;
3. 设置AutogenerateColumns 属性为False;
4. 添加要绑定的字段到DataGrid,并按照下表设置其属性。Sortexpression属性和数据库中数据表中的字段名保持一致。
我使用Northwind数据库中的Employees来说明这个例子。
DataTextField Header Text Sort Expression
EmployeeID Employee ID EmployeeID
LastName LastName LastName
FirstName FirstName FirstName
Title Title Title
City City City
Country Country Country
程序代码设计:
1. 在页面第一次被加载时给DATAGRID添加动态属性sortexpression 和 sortdirection;
2. 给指定的字段的sortexpression 和 sortdirection 赋值,在加载时初始化DataGrid的排序字段和排序方式;
3. 得到dataset 和 dataview 对象。设置dataview 的sort 属性为动态属性sortexpression 和 sortdirection的连接字符串;
4. 用dataview绑定datagrid;
5. 当表头被点击时,触发datagrid的sortcommand事件;
6. 得到sortcommand事件传递过来的sortexpression属性,并与datagrid的sortexpression属性比较;
7. 如果找到相等的
a) 先检查sortdirection属性;
b) If sortdirection属性等于“ASC”then
i. 设置sortdirection属性的值等于“DESC”
c) Else
i. 设置sortdirection属性的值等于“ASC”
d) End If
8. 重复第3步
注意:当你运行下面的代码并点击同一列两次或者两次以上,此列的排列方式会自动根据现有的排列方式的反序排列。
下面的下面的代码将给你演示怎么使用DataGrid的动态属性和DataView对象。
C# Code:
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
if(DataGrid1.Attributes["SortExpression"] == null)
{
DataGrid1.Attributes["SortExpression"] = "LastName";
DataGrid1.Attributes["SortDirection"] = "ASC";
}
BindGrid();
}
}
private void BindGrid()
{
SqlConnection conn = new SqlConnection("server=localhost;uid=sa;pwd=sa;database=Northwind");
conn.Open();
SqlDataAdapter cmd = new SqlDataAdapter("select * from Employees",conn);
DataSet ds = new DataSet();
cmd.Fill(ds,"Employees");
DataView dv = new DataView();
dv = ds.Tables[0].DefaultView;
string SortExpression = DataGrid1.Attributes["SortExpression"];
string SortDirection = DataGrid1.Attributes["SortDirection"];
dv.Sort = SortExpression + " " + SortDirection;
DataGrid1.DataSource = dv;
DataGrid1.DataBind();
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
string SortExpression = e.SortExpression.ToString();
string SortDirection = "ASC";
if(SortExpression == DataGrid1.Attributes["SortExpression"])
{
SortDirection = (DataGrid1.Attributes["SortDirection"].ToString() == SortDirection ? "DESC" : "ASC");
}
DataGrid1.Attributes["SortExpression"] = SortExpression;
DataGrid1.Attributes["SortDirection"] = SortDirection;
BindGrid();
}
DataGrid自动排序相关推荐
- 让Asp.NET的DataGrid可排序、可选择、可分页
'*************************************************************** 'Author: 李洪根 'MAIL: lihonggen0@gci- ...
- DataGrid双向排序以及给HeaderText加图标
DataGrid双向排序以及给HeaderText加图标 DataGrid默认情况下只支持单向排序,而且默认是升序(ASC).能不能使之支持双向排序并且给HeaderText加图标呢? ...
- vba 自动排序_学会这个Excel表格技巧之后,立刻实现自动排序,太牛了
怎么实现自动排序呢?老师从网上下载的2018年各大城市最新平均工资排行表 当我改动其中一个城市的平均工资时,比如广州由7965改为10000,整个表格的顺序会自动调整: 是不是很神奇的样子,怎么做到的 ...
- python中用def实现自动排序_漫画排序算法Python实现
冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...
- fastjson 1.2 版本之前的bug, 反序列化时自动排序,导致签名不过
大家好,我是烤鸭: 今天分享一个问题,使用fastjson 导致签名不过. 1. 问题复现: fastjson 1.2.4 获取返回值: {"data":[{"id&q ...
- NetTiers学习笔记09---RADGrid + EntityDataSource设置默认排序, 及表格自动排序,分页的方法...
前段时间虽然解决了排序和分页的问题,但始终没有解决默认排序的问题, 起初一直把焦点放在EntityDataSource的排序默认值上,但始终搞不定, 今天又花了不少时间Google和研究,终于通过设置 ...
- LeetCode-179:数组自动排序工具Arrays.sort(),比较器Comparator的正确打开方式
题目描述:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数 实例一:输入: [10,2] 输出: 210 实例二:输入: [3,30,34,5,9] 输出: 9534330 在这道题上花费的 ...
- excel设置自动排序123的详细教程
excel作为主要用于电脑编写的电子表格,主要包括了数据记录和整理.数据的加工和计算.数据的统计和分析等等功能,那么excel怎么设置自动排序123呢?下面小编要讲的内容就是excel设置自动排序教程 ...
- C# dgv自动排序后,各种样式设定无效的解决办法
C# dgv自动排序后,各种样式设定无效的解决办法 在网上搜索一些资料还是解决不了,所以自己写了记录一下: 给dgv添加一个sorted事件,每次点击小三角排序时就会调用这个方法,在这里将样式重新设定 ...
最新文章
- python与excel的应用-Python利用pandas处理Excel数据的应用
- 【CodeForces - 546C 】Soldier and Cards (模拟)
- 曲曲直直线条图计算机教案,【曲曲直直的美术画】_美术教案第三课:曲曲直直(三年级美术下册教案)——小学美术...
- dubbo调用超时回滚_面试必问之Dubbo面试题
- MATLAB 贪婪周边无状态路由协议(GPSR)路由仿真
- 数据库笔记02:查询与统计数据
- python计算在月球的体重_NumPy-快速处理数据--矩阵运算
- kr中的逆波兰表示法计算器
- FastJSON应用前测试
- 「leetcode」18. 四数之和:双指针法
- #西柚姨妈体#蹿红微博 流行体之风重袭网络
- 关于seo优化实用篇
- 解决”企业证书打包的ipa,点击app提示未受信任的企业级开发者“的问题
- 05,JavaScript脚本中cookie
- TaintDroid剖析之DVM变量级污点跟踪(下篇)
- Vlink——虚链路
- ol+天地图+geoserver_教程:使用GeoServer发布离线地图服务(WMS)
- strip指令——减小文件的大小(给文件脱衣服)
- F2. Promising String (hard version)(cf)树状数组
- 桌面计算机右击选项里没有管理员,为什么没有以管理员身份运行选项
热门文章
- java店铺装修功能_有赞美业店铺装修前端解决方案
- 普里姆(Prim)算法(P算法):修路问题
- Java后端面试题自我总结
- 招聘 | 国家电网-北京-2024电力设备认知智能技术研发实习生
- C++类和对象(中)(6个默认成员函数)
- php实现公历转阳历,PHP intl可以将公历日期转换为其他日历类型
- 算法提高 ADV-76 GDP计算
- python 计算gdp_有人知道这个Python公式有哪些问题吗??关于找到GDP的min,max还有用find方程。...
- InfoQ 最新 Java 发展趋势报告
- 手机上的三件事别乱去做,一不留神就会中毒,现在了解还来得及