GridView控件提供了用于实现排序功能的接口,通过设置相关属性并实现排序事件的处理程序就可以完成排序功能。我们将在【例8-4】提供的界面的基础上实现排序功能。

【例8-5】演示为GridView控件实现排序。

(1) 在【例8-4】中的GridViewBingding_2.aspx页面中设置GridView控件的属性AllowSorting=True,如图8-18所示。

 
(点击查看大图)图8-18  设置AllowSorting属性

除了AllowSorting属性,还必须设置作为排序关键字的列的SortExpression属性,这是因为,GridView中可以包含按钮列,按钮列一般并不映射到某个数据字段,而排序必须以某个字段作为排序关键字才能完成。

(2) 在GridView控件的便捷任务面板中选择【编辑列】选项,选择可以作为排序关键字的列,设置其SortExpression属性为排序字段名,如图8-19所示。

 
(点击查看大图)图8-19  设置SortExpression属性

这时,作为排序关键字的列的列名变为超链接样式,如图8-20所示。

 
图8-20  设置排序属性后的控件样式

(3) 为GridView控件设置排序事件处理方法,如图8-21所示。

 
(点击查看大图)图8-21  为控件设置排序事件处理方法

GridView的排序功能通过响应排序事件在后台生成已排序的数据源,然后重新绑定数据来完成,因此,需要在事件响应代码中获取排序字段名和排序方式(升序、降序),然后据此对数据源进行排序后重新绑定数据。

(4) 为排序事件处理方法添加如下代码,代码中用一个ViewState["SortDirection"]来记录当前的排列顺序,用一个ViewState["SortExpression"]记录作为排序关键字的字段名,然后重新绑定数据。

  1. protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
  2. {
  3. if(ViewState["SortDirection"] == null)
    ViewState["SortDirection"] = "DESC";
  4. if (ViewState["SortDirection"] .ToString() == "ASC")
  5. ViewState["SortDirection"] = "DESC";
  6. else
  7. ViewState["SortDirection"] = "ASC";
  8. ViewState["SortExpression"] = e.SortExpression;
  9. this.bindgrid();

添加bindgrid()代码如下,使其根据ViewState["SortDirection"]的值生成排序后的DataView对象作为数据源。

  1. void bindgrid()
  2. {
  3. string sqlconnstr =
  4. ConfigurationManager.ConnectionStrings["
    ConnectionString"].ConnectionString; ;
  5. DataSet ds = new DataSet();
  6. using (SqlConnection sqlconn = new SqlConnection(sqlconnstr))
  7. {
  8. SqlDataAdapter sqld = new SqlDataAdapter
    ("select no,name,birth,address from student",
  9. sqlconn);
  10. sqld.Fill(ds, "tabstudent");
  11. }
  12. //判断是否已经进行排序,如果是则按照ViewState中
    存储的信息生成排序后的DataView
  13. 对象
  14. if (ViewState["SortDirection"] == null)
  15. GridView1.DataSource = ds.Tables["tabstudent"].DefaultView;
  16. else
  17. {
  18. DataView SortedDV = new DataView(ds.Tables["tabstudent"]);
  19. SortedDV.Sort = ViewState["SortExpression"].ToString() + " " +
  20. ViewState["SortDirection"].ToString();
  21. GridView1.DataSource = SortedDV;
  22. }
  23. GridView1.DataBind();
  24. }

(5) 排序效果如图8-22所示。

 
图8-22  GridView排序效果

gridview 实现排序相关推荐

  1. gridview 实现排序 (在不是使用sqlDataSource控件,而在后台编码绑定gridview时,指定那个字段排序时使用。本例用了单层结构,可修改后应用于多层)

    GridView控件提供了用于实现排序功能的接口,通过设置相关属性并实现排序事件的处理程序就可以完成排序功能.我们将在[例8-4]提供的界面的基础上实现排序功能. [例8-5]演示为GridView控 ...

  2. GridView 自动排序

    GridView自动排序 GridView自带了数据排序功能.在设计视图下,只能对GridView的排序数据列和排序方向进行静态设置.在后台程序中,则需要用Attributes方式对GridView的 ...

  3. Gridview 手动排序实现

    --aspx页面添加AllowSorting="True" AutoGenerateColumns="false" SortExpression="f ...

  4. android gridview拖动排序,Asp.net GridView 拖拽排序    原创(欢迎拍砖,敬请嘴下留情!)...

    原理:客户端排序(或者说组织新的排序顺序),Ajax 更新服务器端数据. 客户端用jquery插件sortable实现拖拽排序,保存之前检索顺序变化了的数据,并组织成Json数据,用AJax传送到服务 ...

  5. GridView表头排序方法设置

    1.效果图 2.前台代码 说明:红色代码为核心代码 <asp:GridView ID="gvData" runat="server" AutoGenera ...

  6. asp.net(C#)读取文件夹和子文件夹下所有文件,绑定到GRIDVIEW并排序 .

    Asp部分: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyFiles ...

  7. GridView自动排序(原创)

    前台: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx ...

  8. GridView 序号 排序 正序 倒序

    (正序) 方法一(不带分页): <asp:TemplateField HeaderText="序号">         <ItemTemplate> < ...

  9. gridview排序加箭头(二)

    用gridview排序的时候,在.NET里是不能被标注的,下面提供如下方法:主要是显示的时候进行了下判断,然后进行不同的排序,这样就给这个gridview加上了排序的箭头,有意思的是<font ...

  10. GRIDVIEW排序 动态实现和静态实现

    用了GRIDVIEW一段时间,发现很多人都在问GRIDVIEW的排序功能,有些朋友在我的QQ群(13536330)里面问我,我觉得有三种方法可以实现,但本文我只讲两种,相信可以满足大家的需要了吧. 1 ...

最新文章

  1. 代码中应用设计模式,看这一篇就够了
  2. ExtJS4.2学习(八)表格限制输入数据的类型
  3. Ubuntu 16.04安装VirtualBox 5.1实现无缝模式
  4. ajax后台如何把对象转为json_57. Django 2.1.7 查询数据返回json格式
  5. 央行数字货币研究所悄然挂牌 工作人员:已有一段时间
  6. java.lang包【Object类】
  7. JS 删除 cookie
  8. php算法求出一个数可以被分解成多少个_面试时写不出排序算法?看这篇就够了(下)...
  9. ZeroMQ简介:一种高性能的异步消息传递库
  10. 关于含光 800,这里有你想要的一切答案!
  11. (转) Deep Learning Resources
  12. 在反复的复习中给自己一点收益,一个机会,一些动力!
  13. linux codeblocks汉化
  14. 解决VMware虚拟机中鼠标闪烁问题
  15. “由于文件许可权错误,word无法完成保存操作”解决
  16. 抽象类+接口+内部类作业题
  17. CSS中的text-overflow属性详解 (控制文字在一行显示,超出部分加省略号)
  18. MiniGUI学习整理
  19. 如何解决Maven依赖冲突
  20. iphone 屏幕大小

热门文章

  1. 青龙脚本--今日头条极速版
  2. labview软件介绍
  3. 微信群打卡小程序_签到打卡小程序,哪个更适合你?
  4. MATLAB自动设置仿真曲线颜色和线型属性
  5. 电机驱动软件学习笔记——数据打包解包CRC校验
  6. c++删除字符串特殊符号
  7. xss跨站攻击详讲 | 如何利用xss拿下一个站?
  8. Android可达性分析,基于时间距离的机会网络可达性分析及应用
  9. matlab常用函数解释,MATLAB常用函数总结
  10. 经纬度度分秒转换小数