废话不说,直接上例子:

前台代码:

<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进行排序相关推荐

  1. 在win8上构建按拼音排序的GridView控件

    在win8上构建按拼音排序的GridView控件       本人最近因为项目,用C#做了一个可以在win8上使用拼音排序的的GridView控件.其中该控件主要支持以下几个功能: ①支持拼音排序 ② ...

  2. LINQ to SQL 运行时动态构建查询条件

    原文地址:http://msdn.microsoft.com/zh-cn/dd567295.aspx 在进行数据查询时,经常碰到需要动态构建查询条件.使用LINQ实现这个需求可能会比以前拼接SQL语句 ...

  3. 给gridview动态生成radiobutton添加OnCheckedChanged监听函数

    在写研究生系统审核功能的时候,有一个页面的gridview动态生成四列radiobutton,在gridview控件外有四个radiobutton分别控制这四列的全选中.那么当外面的某个全选按钮选中后 ...

  4. 给gridview动态生成radiobutton添加OnCheckedChanged事件

    在写研究生系统审核功能的时候,有一个页面的gridview动态生成四列radiobutton,在gridview控件外有四个 radiobutton分别控制这四列的全选中.那么当外面的某个全选按钮选中 ...

  5. h5select动态加载数据_HTML5+中动态构建列表并填充数据

    部分代码参考demo----<历史上的今天>. 感谢作者的分享,愿好人一生平安,虽然只有两个页面,但是通过这个示例让我学会了5+中如何动态构建列表并填充数据,非常实用. html部分: 历 ...

  6. GridView动态添加模版列

    由于GridView如果动态添加模版列的话,在页面做其他事件时GridView又变为初始状态,所以需要在页面On_InIt里动态绑定上 using System; using System.Colle ...

  7. 扩展GridView控件(2) - 复合排序和排序状态提示

    GridView既强大又好用.为了让它更强大.更好用,我们来写一个继承自GridView的控件. [索引页] [源码下载] 扩展GridView控件(2) - 复合排序和排序状态提示 作者:webab ...

  8. Unity动态构建Mesh来绘制任意多边形(雷达图效果)

    由于很多同学没有做出来,特此补传一个Demo工程 (版本Unity2019.1.8f1) CSDN下载:https://download.csdn.net/download/linxinfa/1195 ...

  9. 通过创建动态类型 动态构建Expression Select表达式来控制Property可见性

    通过创建动态类型 动态构建Expression Select表达式来控制Property可见性 项目中经常遇到的一个场景,根据当前登录用户权限,仅返回权限内可见的内容.参考了很多开源框架,更多的是在V ...

最新文章

  1. python pytest allure_python-pytest-Allure2测试报告生成
  2. Intel Realsense D435 python multiprocessing 摄像头多进程流传输
  3. Python实训day10pm【os模块-处理Excel统计学生观看直播时长】
  4. 如何下载Android源码(非常详细,含自动恢复下载,编译,运行模拟器说明)
  5. spss正态性检验_SPSS和R中的正态分布的确定和几何均值的计算
  6. 多层bom展开_K3 BOM 多级展开SQL
  7. 【笔试/面试】SQL 经典面试题
  8. cocos2dx阴影层的实现
  9. RESTful Web Services in Spring 3(上)转载
  10. OPENGL学习笔记整理(三):缓冲区对象
  11. 【CF1107G】Vasya and Maximum Profit(单调栈/单调栈+线段树最大子段和)
  12. 网络层安全协议IPSec
  13. CHD的impala实现hive和hbase数据查询
  14. Android开发自定义View之仿米家APP双色灯控制UI:做一个智能家居产品的简单智能灯UI !(附带Demo)
  15. C++ 将字符串转换为浮点数
  16. 【PANDA教程】PANDA详细教程笔记
  17. 如何提高项目估算精准度?关键看5大影响因子
  18. DELPHI BULK INSERT
  19. 北京邮电/北京航空航天大学上机题目
  20. Unity --- 物理引擎 ---- 刚体RigidBody 与 碰撞器 collider

热门文章

  1. 高等数学18讲(19版)第七讲 定积分的计算例题
  2. PTA - 数据库合集10
  3. 最新小红书解析api接口php源码
  4. Apache服务器从安装到排除问题
  5. FileZilla 425 Can't open data connection
  6. 酷派手机android版本,酷派大神X7的手机系统是什么?能升级安卓5.0吗?
  7. 朋友圈骂人被判在朋友圈道歉 10 天
  8. Windows11设置菜单栏(任务栏)位置居中或者靠左显示
  9. NeurIPS 2019 | MelGAN:基于生成对抗网络快速生成音频
  10. egret接4399排行榜头像跨域问题