GridView自动排序

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

示例如下:
(前台)

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" AllowSorting="True" OnSorting="GridView1_Sorting">
            <FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <RowStyle BackColor="#EFF3FB" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID" SortExpression="id" />
                <asp:BoundField DataField="name" HeaderText="NAME" SortExpression="name" />
                <asp:BoundField DataField="age" HeaderText="AGE" SortExpression="age" />
            </Columns>
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <EditRowStyle BackColor="#2461BF" />
            <AlternatingRowStyle BackColor="White" />
        </asp:GridView>
    </div>
    </form>
</body>
</html>

前台注意点:
需要对GridView启用AllowSorting、设置OnSorting事件,对需要排序的列设定SortExpression属性。

(后台)

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // 设定初始排序参数值

// 错误的属性设置方法:SortExpression、SortDirection均是GridView只读属性,无法直接赋值。
            //this.GridView1.SortExpression = "id";
            //this.GridView1.SortDirection = "ASC";

// 正确的属性设置方法
            this.GridView1.Attributes.Add("SortExpression", "id");
            this.GridView1.Attributes.Add("SortDirection", "ASC");

// 绑定数据源到GridView
            this.BindGridView();
        }
    }

/// <summary>
    /// GridView排序事件
    /// </summary>
    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        // 从事件参数获取排序数据列
        string sortExpression = e.SortExpression.ToString();

// 假定为排序方向为“顺序”
        string sortDirection = "ASC";

// “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改
        if (sortExpression == this.GridView1.Attributes["SortExpression"])
        {
            //获得下一次的排序状态
            sortDirection = (this.GridView1.Attributes["SortDirection"].ToString() == sortDirection ? "DESC" : "ASC");
        }

// 重新设定GridView排序数据列及排序方向
        this.GridView1.Attributes["SortExpression"] = sortExpression;
        this.GridView1.Attributes["SortDirection"] = sortDirection;

this.BindGridView();
    }

/// <summary>
    /// 绑定到GridView
    /// </summary>
    private void BindGridView()
    {
        // 获取GridView排序数据列及排序方向
        string sortExpression = this.GridView1.Attributes["SortExpression"];
        string sortDirection = this.GridView1.Attributes["SortDirection"];

// 调用业务数据获取方法
        DataTable dtBind = this.getDB();

// 根据GridView排序数据列及排序方向设置显示的默认数据视图
        if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
        {
            dtBind.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
        }

// GridView绑定并显示数据
        this.GridView1.DataSource = dtBind;
        this.GridView1.DataBind();
    }

/// <summary>
    /// 获取数据源的方法
    /// </summary>
    /// <returns>数据源</returns>
    private DataTable getDB()
    {
        DataTable dt = new DataTable();

dt.Columns.Add("id");
        dt.Columns.Add("name");
        dt.Columns.Add("age");

dt.Rows.Add(new object[] { "000001", "hekui", "26" });
        dt.Rows.Add(new object[] { "000002", "zhangyu", "26" });
        dt.Rows.Add(new object[] { "000003", "zhukundian", "27" });
        dt.Rows.Add(new object[] { "000004", "liyang", "25" });
        dt.Rows.Add(new object[] { "000005", "caili", "27" });

return dt;
    }
}

转载于:https://www.cnblogs.com/dthom/articles/1826888.html

GridView 自动排序相关推荐

  1. GridView自动排序(原创)

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

  2. gridview的sort_GridView实现自动排序带上下箭头

    GridView排序 ForeColor="#333333" GridLines="None" AllowSorting="True" On ...

  3. vba 自动排序_学会这个Excel表格技巧之后,立刻实现自动排序,太牛了

    怎么实现自动排序呢?老师从网上下载的2018年各大城市最新平均工资排行表 当我改动其中一个城市的平均工资时,比如广州由7965改为10000,整个表格的顺序会自动调整: 是不是很神奇的样子,怎么做到的 ...

  4. python中用def实现自动排序_漫画排序算法Python实现

    冒泡排序 冒泡排序的思想,我们要把相邻的元素两两比较,当一个元素大于右侧相邻元素时, 交换它们的位置;当一个元素小于或等于右侧相邻元素时,位置不变. def bubbleSort(list): ran ...

  5. fastjson 1.2 版本之前的bug, 反序列化时自动排序,导致签名不过

    大家好,我是烤鸭: 今天分享一个问题,使用fastjson 导致签名不过. 1.  问题复现: fastjson 1.2.4 获取返回值: {"data":[{"id&q ...

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

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

  7. NetTiers学习笔记09---RADGrid + EntityDataSource设置默认排序, 及表格自动排序,分页的方法...

    前段时间虽然解决了排序和分页的问题,但始终没有解决默认排序的问题, 起初一直把焦点放在EntityDataSource的排序默认值上,但始终搞不定, 今天又花了不少时间Google和研究,终于通过设置 ...

  8. LeetCode-179:数组自动排序工具Arrays.sort(),比较器Comparator的正确打开方式

    题目描述:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数 实例一:输入: [10,2] 输出: 210 实例二:输入: [3,30,34,5,9] 输出: 9534330 在这道题上花费的 ...

  9. excel设置自动排序123的详细教程

    excel作为主要用于电脑编写的电子表格,主要包括了数据记录和整理.数据的加工和计算.数据的统计和分析等等功能,那么excel怎么设置自动排序123呢?下面小编要讲的内容就是excel设置自动排序教程 ...

最新文章

  1. 强化学习(四)—— DQN系列(DQN, Nature DQN, DDQN, Dueling DQN等)
  2. java 抛出403_java.io.IOException:服务器返回HTTP响应代码:403 [URL]
  3. Apollo后台配置:添加部门
  4. js svg语音波动动画_让动效更酷炫!4 个常见且常用的 SVG 交互动画方法
  5. JdbcTemplate和NamedParameterJdbcTemplate
  6. 构造函数内部原理 包装类
  7. 【AI视野·今日NLP 自然语言处理论文速览 第二十七期】Thu, 4 Nov 2021
  8. c语言else不运行,if...else if..else第三句不执行?
  9. appnium连接夜神模拟器
  10. java io 和nio 区别_java IO和NIO区别
  11. 计算机加域后数据库无法登录,[MDT] 解决因加域客户端 Windows 登录身份引发的无法打开登录所请求的数据库故障...
  12. 万物皆可DAO?一文带你全方位解读DAO类型
  13. 影片相继撤档“520”,在线票务平台等待下一个“黄金档”
  14. 会话固定攻击(session fixation attack)及解决办法
  15. 电子学会2021年3月青少年软件编程(图形化)等级考试试卷(二级)答案解析
  16. 概率论0—概率初步简介
  17. 【VBS教程3】:VBS如何激活指定窗口
  18. c语言体重指数bmi计算器,身高106cm体重19.5kg的女性标准体重与BMI指数 - BMI计算器...
  19. Linux三剑客awk之行和列
  20. 年产10000吨餐厨垃圾制备氨基酸有机肥工厂设计

热门文章

  1. 三星s4 android8,三星可升级安卓8.0设备名单泄露 S6无缘
  2. python怎么识别log函数_log函数图像_函数图像_python函数图像 - 云+社区 - 腾讯云
  3. RNA-seq工作流程:基因水平的探索性分析和差异表达
  4. POJ 2694. A Simple Poker Game
  5. 易语言打印九九乘法表
  6. AWS解决方案架构师认证 Professional SAP-C01 2019 新版考试蓝图
  7. 爱的诠释,你懂的!我们都懂的!
  8. 制作稳定版本的rootfs
  9. JDK动态代理用例及源码解析
  10. 数据库及相关知识详解大全