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/shiguangshuo/p/4839346.html

【转载】GridView自动排序相关推荐

  1. GridView 自动排序

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

  2. GridView自动排序(原创)

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

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

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

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

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

  5. 计算机无法自动排列,如何设置Excel表不能自动排序

    Excel表格是日常工作中经常使用的办公软件之一,其中许多网民将使用excel表格来记录数据. 今天,我将向您介绍如何在制作Excel工作表的过程中快速添加序列号以及如何自动添加序列号. 让我们找出答 ...

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

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

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

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

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

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

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

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

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

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

最新文章

  1. slackware安装mysql_slackware系统安装二
  2. java插入时间 mssql_JAVA操作数据库Datetime数据
  3. java 类 request_java普通类得到request对象
  4. 时间复杂度和空间复杂度,一看就懂,面试前必过一遍
  5. Python Django项目部署 Linux 服务器
  6. JAVA中的引用四种引用类型
  7. 工作笔记-新系统安装deb文件失败
  8. web memory
  9. 阿里云服务使用docker安装mysql
  10. c语言-输出菱形图案
  11. 入行数据科学,推荐几本好书看看
  12. 金额格式化,符号位,保留两位小数
  13. 电池SOC仿真系列-基于遗忘因子的最小二乘法电池参数辨识(二阶RC)
  14. windows安装gensim
  15. 工业交换机冗余什么意思?
  16. 【NLP】词法分析和词性标注
  17. iOS开发笔记--基于面向协议MVP模式下的软件设计
  18. 一文看明白IC 芯片全流程:从设计、制造到封装
  19. oracle 如何取去年,oracle 获取当前日期 去年日期 上年日期
  20. 使用Android Studio写一个发短信的小案例

热门文章

  1. MD5加密解密网站测试,MD5加密还安全吗?
  2. 数据不平衡问题——SMOTE算法赏析
  3. 如何在微信公众号优雅地添加代码
  4. c语言实验报告字符数组,C语言实验报告《数组》
  5. html做一个课程表
  6. pytz.exceptions.UnknownTimeZoneError解决办法
  7. 松下伺服务器型号A5和A6,松下伺服电机 A6家族型号对照表.pdf
  8. arcgis可达性分析
  9. 什么是事实表和维度表?什么是维度和度量?
  10. 增长黑客AB-Test系统(四)——AB-Test 最小样本量