GridView表头排序方法设置

1、效果图

2、前台代码

说明:红色代码为核心代码

<asp:GridView ID="gvData" runat="server" AutoGenerateColumns="False"
                    OnRowDataBound="gvData_RowDataBound"
                    onsorting="gvData_Sorting" AllowSorting="true">
                    <Columns>
                        <asp:TemplateField HeaderText="新闻标题">
                            <ItemTemplate>
                                <asp:Label ID="labtitle" runat="server" Text=‘<%# Bind("title") %>‘></asp:Label>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="阅读量" SortExpression="count">
                            <ItemTemplate>
                                <asp:Label ID="labcount" runat="server" Text=‘<%# Bind("count") %>‘></asp:Label>
                            </ItemTemplate>
                            <ItemStyle Width="15%" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="添加人">
                            <ItemTemplate>
                                <asp:Label ID="labadmin" runat="server" Text=‘<%# Bind("adminName") %>‘></asp:Label>
                            </ItemTemplate>
                            <ItemStyle Width="25%" />
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="时间" SortExpression="ID">
                            <ItemTemplate>
                                添加:<asp:Label ID="labtime" runat="server" Text=‘<%# Bind("times") %>‘></asp:Label>
                                <asp:Label ID="labtimepass" runat="server" Text=‘<%# Bind("timepass") %>‘></asp:Label>
                                <br />
                            </ItemTemplate>
                            <ItemStyle Width="30%" />
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>

3、后台代码

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            ViewState["SortOrder"] = "ID";  //默认排序字段,必须
            ViewState["OrderDire"] = "Desc";  //默认排序,必须
            fillData();
        }
    }
    protected void fillData()
    {    string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"];
    string sql = “select * from dt_news ”+sort;        //datatable 自己写,绑定GridView自己写,我这里就不写了
  }
protected void gvData_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        //判断是否是表头
        if (e.Row.RowType == DataControlRowType.Header)
        {
            //判断是否进行排序
            //是否是排序字段信息
            for (int i = 0; i < e.Row.Cells.Count; i++)
            {
                ControlCollection  cons= e.Row.Cells[i].Controls;
                if (cons.Count == 1)
                {
                    LinkButton lb = cons[0] as LinkButton;
                    if (lb != null)
                    {
                        if (ViewState["SortOrder"].ToString() == lb.CommandArgument)
                        {
                            if (ViewState["OrderDire"].ToString() == "Desc")
                            {
                                lb.Text += "▼";
                            }
                            else
                            {
                                lb.Text += "▲";
                            }
                        }
                    }
                }
            }
        }
    }
protected void gvData_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sPage = e.SortExpression;

        if (ViewState["SortOrder"].ToString() == sPage)
        {
            if (ViewState["OrderDire"].ToString() == "Desc")

                ViewState["OrderDire"] = "ASC";
            else
                ViewState["OrderDire"] = "Desc";
        }
        else
        {
            ViewState["SortOrder"] = e.SortExpression;
        }
        PageControl1.pageNow = 1;
        fillData();
    }
时间: 2024-11-29 09:13:18

GridView表头排序方法设置的相关文章

DBGridEh 点击表头排序方法

方法1: (不用编程写代码) 程序中引用 单元 EhLibCDS设置DBGridEh的属性:      ColumnDefValues.Title.TitleButton = True      OptionsEh = [ghAutoSortMarking, dghMultiSortMarking]      SortLocal = True 参考: 以下翻译来自EhLib/DataService/readme.txt “在 Ehlib 的 DataService 文件夹下提供了一些可以使数据集

JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)

1.使用对象字面量定义对象 var person={}; 使用这种方式创建对象时,实际上不会调用Object构造函数. 开发人员更喜欢对象字面量的语法. 2.有时候需要传递大量可选参数的情形时,一般来讲使用对象字面量来封装多个可选参数. 3.对象属性的点表示法与方括号表示法的区别 (1)功能上:两者没区别 (2)但是方括号的有点是可以通过变量来访问属性 例如: var person={ name:"Nic" } 点表示法:person.name 方括号表示法:var prop=“nam

lucene之排序、设置权重、优化、分布式搜索(转)

lucene之排序.设置权重.优化.分布式搜索(转) 1. 基本应用 using System;using System.Collections.Generic;using System.Text;using Lucene.Net;using Lucene.Net.Analysis;using Lucene.Net.Analysis.Standard;using Lucene.Net.Documents;using Lucene.Net.Index;using Lucene.Net.QueryP

Gridview利用DataFormatString属性设置数据格式

首 先把Gridview的AutoGenerateColumns属性设为False(默认是False),DataField选择相应的字段,特别需要注 意的是要把需要设置的字段的HtmlEncode属性设置为False,否则所设置的格式将无法显示,然后就可以设置每个字段的 DataFormatString属性来输出不同的格式了. DataFormatString 属性语法如下: {A:B} 如:DataFormatString="{0:格式字符串}" 冒号前的值(常规示例中为 A)指定在

使用js实现表头排序

工作中遇到需要表头排序的地方,我从网上参考很一些东西,汇总一下,写出来这个排序函数,这个运用了array对象的sort()方法,感觉还不错,实现的逻辑比较简单.还有就是排序列是时间格式,用到了正则表达式做了个替换,并转化为时间对象,这两点是整个排序所用到的关键技术 <html> <head> </head> <body>  <table id="tbSort">   <thead>       <tr>

javascript: 带分组数据的Table表头排序

如下图: 要求:点击表头排序时,"分组"及"分组明细"的数据层次关系不变 从网上找了一段常规的table排序,改了改,以满足“分组支持”,贴在这里备份 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <htm

排序方法的比较

首先给出各个排序方式的性能比较: 排序方法的比较 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 辅助存储 插入排序 直接插入 O(n2) O(n) O(n2) O(1) 稳定 希尔排序 O(n1.3) O(n) O(n2) O(1) 不稳定 选择排序 直接选择 O(n2) O(n2) O(n2) O(1) 不稳定 堆排序 O(nlog2n) O(nlog2n) O(nlog2n) O(1) 不稳定 交换排序 冒泡排序 O(n2) O(n) O(n2) O(1) 稳

各种排序方法

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存. 我们这里说说八大排序就是内部排序. 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序.堆排序或归并排序序. 快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短: 1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 将一个记录插入到已排序

经典排序方法及细节小结(1)

在数据结构的学习中,排序是我们要重点学习的一部分:在掌握几种经典排序算法的同时,我们还要能够根据实际中遇到的情况,结合它们的时间复杂度.空间复杂度.稳定性这几个方面选择最合适的算法.现针对常用的几种经典排序算法和容易出错的细节总结一下: 1.插入排序 (1)直接插入排序 直接插入排序是一种最简单的排序方法,其基本思路是: ①将一条记录插入到已排好的有序表中,从而得到一个大小加1的新有序表. ②每一步将一个待排序的数据元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去 ③循环①②