GridView动态构建OrderBy进行排序
废话不说,直接上例子:
前台代码:
<asp:GridView ID="GridView1" runat="server" AllowSorting="true" AutoGenerateColumns="false" onsorting="GridView1_Sorting"><Columns><asp:BoundField HeaderText="Column1" DataField="Field1" SortExpression="Field1" /><asp:BoundField HeaderText="Column2" DataField="Field2" SortExpression="Field2" /></Columns> </asp:GridView>
注意:
1、需要设置AllowSorting=true
2、需要设置每一列的SortExpression,设置的值为绑定数数据源中的一列,排序时,根据该设置值为排序依据
3、增加onsorting事件
后台代码:
1、本例子使用到的测试类
[Serializable] public class TestClass {public int Field1 { get; set; }public int Field2 { get; set; } }
2、为测试例子准备测试数据
protected void Page_Load(object sender, EventArgs e) {List<TestClass> oData = new List<TestClass>();for (int i = 1; i <= 10; i++){TestClass t = new TestClass() { Field1 = i, Field2 = 11 - i };oData.Add(t);}ViewState["Data"] = oData;this.GridView1.DataSource = oData;this.GridView1.DataBind(); }
3、编辑排序事件
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) {//从ViewState取得绑定在界面的数据源List<TestClass> oDatas = (List<TestClass>)ViewState["Data"];//从Session取得当前字段的排序状态if (Session[e.SortExpression] == null){Session[e.SortExpression] = SortDirection.Ascending;}//判断当前,如果为升序,则以倒序排序一次,如果为倒序,则以升序排序一次,并更新当前排序//动态的重点在于利用反射,根据e.SortExpression取得排序栏位if ((SortDirection)Session[e.SortExpression] == SortDirection.Ascending){oDatas = oDatas.OrderBy(c => c.GetType().GetProperty(e.SortExpression).GetValue(c, null)).ToList();Session[e.SortExpression] = SortDirection.Descending;}else{oDatas = oDatas.OrderByDescending(c => c.GetType().GetProperty(e.SortExpression).GetValue(c, null)).ToList();Session[e.SortExpression] = SortDirection.Ascending;}//重新绑定一次排序後的数据以显示结果GridView gv = sender as GridView;gv.DataSource = oDatas;gv.DataBind(); }
至此,本例子已完。
希望对各位有所帮助。
转载于:https://www.cnblogs.com/ZC_Mo-Blog/p/4648398.html
GridView动态构建OrderBy进行排序相关推荐
- 在win8上构建按拼音排序的GridView控件
在win8上构建按拼音排序的GridView控件 本人最近因为项目,用C#做了一个可以在win8上使用拼音排序的的GridView控件.其中该控件主要支持以下几个功能: ①支持拼音排序 ② ...
- LINQ to SQL 运行时动态构建查询条件
原文地址:http://msdn.microsoft.com/zh-cn/dd567295.aspx 在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句 ...
- 给gridview动态生成radiobutton添加OnCheckedChanged监听函数
在写研究生系统审核功能的时候,有一个页面的gridview动态生成四列radiobutton,在gridview控件外有四个radiobutton分别控制这四列的全选中.那么当外面的某个全选按钮选中后 ...
- 给gridview动态生成radiobutton添加OnCheckedChanged事件
在写研究生系统审核功能的时候,有一个页面的gridview动态生成四列radiobutton,在gridview控件外有四个 radiobutton分别控制这四列的全选中.那么当外面的某个全选按钮选中 ...
- h5select动态加载数据_HTML5+中动态构建列表并填充数据
部分代码参考demo----<历史上的今天>. 感谢作者的分享,愿好人一生平安,虽然只有两个页面,但是通过这个示例让我学会了5+中如何动态构建列表并填充数据,非常实用. html部分: 历 ...
- GridView动态添加模版列
由于GridView如果动态添加模版列的话,在页面做其他事件时GridView又变为初始状态,所以需要在页面On_InIt里动态绑定上 using System; using System.Colle ...
- 扩展GridView控件(2) - 复合排序和排序状态提示
GridView既强大又好用.为了让它更强大.更好用,我们来写一个继承自GridView的控件. [索引页] [源码下载] 扩展GridView控件(2) - 复合排序和排序状态提示 作者:webab ...
- Unity动态构建Mesh来绘制任意多边形(雷达图效果)
由于很多同学没有做出来,特此补传一个Demo工程 (版本Unity2019.1.8f1) CSDN下载:https://download.csdn.net/download/linxinfa/1195 ...
- 通过创建动态类型 动态构建Expression Select表达式来控制Property可见性
通过创建动态类型 动态构建Expression Select表达式来控制Property可见性 项目中经常遇到的一个场景,根据当前登录用户权限,仅返回权限内可见的内容.参考了很多开源框架,更多的是在V ...
最新文章
- python pytest allure_python-pytest-Allure2测试报告生成
- Intel Realsense D435 python multiprocessing 摄像头多进程流传输
- Python实训day10pm【os模块-处理Excel统计学生观看直播时长】
- 如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)
- spss正态性检验_SPSS和R中的正态分布的确定和几何均值的计算
- 多层bom展开_K3 BOM 多级展开SQL
- 【笔试/面试】SQL 经典面试题
- cocos2dx阴影层的实现
- RESTful Web Services in Spring 3(上)转载
- OPENGL学习笔记整理(三):缓冲区对象
- 【CF1107G】Vasya and Maximum Profit(单调栈/单调栈+线段树最大子段和)
- 网络层安全协议IPSec
- CHD的impala实现hive和hbase数据查询
- Android开发自定义View之仿米家APP双色灯控制UI:做一个智能家居产品的简单智能灯UI !(附带Demo)
- C++ 将字符串转换为浮点数
- 【PANDA教程】PANDA详细教程笔记
- 如何提高项目估算精准度?关键看5大影响因子
- DELPHI BULK INSERT
- 北京邮电/北京航空航天大学上机题目
- Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider