GridView自动排序

简介: GridView自带了数据排序功能。在设计视图下,只能对GridView的排序数据列和排序方向进行静态设置。在后台程序中,则需要用Attributes方式对GridView的这两个属性进行动态设置。 示例如下: (前台)DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.
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;
    }
}

示例工程:
/Files/heekui/GridViewSort.rar
目录
相关文章
|
JSON 自然语言处理 API
北大、西湖大学等开源「裁判大模型」PandaLM:三行代码全自动评估LLM,准确率达ChatGPT的94%
北大、西湖大学等开源「裁判大模型」PandaLM:三行代码全自动评估LLM,准确率达ChatGPT的94%
914 0
|
前端开发 Java Linux
springboot整合pagehelper插件失效
springboot整合pagehelper插件失效
springboot整合pagehelper插件失效
|
人工智能 前端开发 大数据
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
开发者社区好久没有送礼包了,阿里妹实在“憋得慌”!今天咱们送个大的,这里收录了目前为止最全的阿里系电子书、火遍业界的技术大会演讲资料、超人气系列公开课 以及 四位一体的开发者学习大礼包!
45795 2
千份阿里技术学习资源免费送!你想要的电子书、大会资料和资源礼包都在这
|
关系型数据库 MySQL 数据库
Mysql密码忘记恢复
Mysql密码忘记恢复
719 0
|
应用服务中间件 网络安全 开发工具
centos7.4+GitLab部署
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。系统环境准备建议:内存4G以上不然带不动 [root@V1 ~]# cat /etc/redhat-release CentOS Linux release 7.
2821 0
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
923 150
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话