ASP.NET GirdView学习之三 排序

要先设置GridView的AllowSortring=true,这样当点击列标题的时候才能激发GridView的Sorting事件进行排序

1using System;
2using System.Data;
3using System.Configuration;
4using System.Collections;
5using System.Web;
6using System.Web.Security;
7using System.Web.UI;
8using System.Web.UI.WebControls;
9using System.Web.UI.WebControls.WebParts;
10using System.Web.UI.HtmlControls;
11using System.Collections.Generic;
12
13public partial class GridViewSortingTest : System.Web.UI.Page
14{
15  protected void Page_Load(object sender, EventArgs e)
16  {
17    if (!IsPostBack)
18    {
19      ClientInfoAccessObj accessor = new ClientInfoAccessObj();
20      GridView1.DataSource = accessor.GetAllClients();//绑定所有客户信息
21      GridView1.DataBind();
22    }
23  }
24  //按照客户姓名进行排序比较
25  public int CompareByClientName(ClientInfo Client1, ClientInfo Client2)
26  {
27    return Client1.ClientName.CompareTo(Client2.ClientName);
28  }
29
30  //按照邮编和地址进行排序比较
31  public int CompareByPostCodeAndAddressStr(ClientInfo client1, ClientInfo client2)
32  {
33    int ret = client1.PostCode.CompareTo(client2.PostCode);
34    if (ret != 0)
35      return ret;
36    else//如果邮编一样
37    {
38      return client1.AddressStr.CompareTo(client2.AddressStr);
39    }
40  }
41  //按照邮编进行排序比较
42  public int CompareByPostCode(ClientInfo client1, ClientInfo client2)
43  {
44    return client1.PostCode.CompareTo(client2.PostCode);
45  }
46  //正在排序的事件
47  protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
48  {
49    ClientInfoAccessObj accessor = new ClientInfoAccessObj();
50    List<ClientInfo> clients = accessor.GetAllClients();
51    switch (e.SortExpression)
52    {
53      case "ClientName":
54        clients.Sort(CompareByClientName);//参数是一个Comparison<T>类型的泛型委托的函数名
55        break;
56      case "MultiColumnSort":
57        clients.Sort(CompareByPostCodeAndAddressStr);
58        break;
59      case "PostCode":
60        clients.Sort(CompareByPostCode);
61        break;
62      default:
63        ClientScript.RegisterClientScriptBlock(this.GetType(), "InfoMsg", "alert('不支持对此字段进行排序');", true);
64        break;
65    }
66    GridView1.DataSource = clients;//绑定显示数据
67    GridView1.DataBind();
68  }
69  protected void btnSortByName_Click(object sender, EventArgs e)
70  {
71    GridView1.Sort("ClientName", SortDirection.Ascending);//此事件执行完毕再执行Sorting事件
72  }
73  protected void btnSortByPostCodeAndAddress_Click(object sender, EventArgs e)
74  {
75    GridView1.Sort("MultiColumnSort", SortDirection.Ascending);
76  }
77}
78

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索gridview
, 排序
, client
, system
, girdview
, item背景girdview
, CompareTo
, 邮编
Accessor
,以便于您获取更多的相关知识。

时间: 2024-11-03 17:39:36

ASP.NET GirdView学习之三 排序的相关文章

ASP.NET GirdView学习之六 使用模板列实现多行删除

1using System; 2using System.Data; 3using System.Configuration; 4using System.Collections; 5using System.Web; 6using System.Web.Security; 7using System.Web.UI; 8using System.Web.UI.WebControls; 9using System.Web.UI.WebControls.WebParts;10using System

ASP.NET Core学习之三 NLog日志

上一篇简单介绍了日志的使用方法,也仅仅是用来做下学习,更何况只能在console输出. NLog已是日志库的一员大佬,使用也简单方便,本文介绍的环境是居于.NET CORE 2.0 ,目前的版本也只有beta版. 一.安装和配置 1.安装 命令如下 PM> Install-Package NLog.Web.AspNetCore -Version 4.5.0-beta04 2.创建配置文件 在web项目根目录下,创建配置文件nlog.config ,并且将文件的属性"复制到输出目录"

girdview 在不排序时,能否实现列表头单击或双击事件?

问题描述 girdview在不排序时,能否实现列表头单击或双击事件? 解决方案 解决方案二:通过扩张gridview实现参考http://www.cnblogs.com/webabcd/archive/2007/01/22/626484.html解决方案三:使用模板列,可编辑表头,加脚本事件解决方案四:能.用模板列.<asp:templatefield><headertemplate><asp:buttonrunat=server...<headertemplate&g

ASP.NET的学习顺序问题

前前后后收到过一些人的来信,询问ASP.NET的学习顺序问题,在此就向打算系统学习ASP.NET技术的初学者谈谈我的建议. 如果你已经有较多的面向对象开发经验,跳过以下这两步: 第一步 掌握一门.NET面向对象语言,C#或VB.NET. 我强烈反对在没系统学过一门面向对象(OO)语言的前提下去学ASP.NET. ASP.NET是一个全面向对象的技术,不懂OO,那绝对学不下去! 第二步 对.NET Framework类库有一定的了解 可以通过开发Windows Form应用程序来学习.NET Fr

ASP.NET MVC学习之控制器篇扩展性

原文:ASP.NET MVC学习之控制器篇扩展性 一.前言 在之前的一篇随笔中已经讲述过控制器,而今天的随笔是作为之前的扩展.   二.正文 1.自定义动作方法 相信大家在开发过程一定会遇到动作方法的重名问题,虽然方法的名称和参数一样,但是里面的逻辑是不一样的,因为你设置了对应的注解属性可以确定调用哪个动作方法.这个时候你就需要将动作的名称与方法的名称区别开来,那么你就可以使用ActionName注解属性.比如我们要求一个页面在本地访问与非本地访问时呈现不同的页面,但是你又想用不同的方法区分开来

ASP.NET阶段学习

概况 ASP.NET 是一个开发框架,用于通过 HTML.CSS.JavaScript 以及服务器脚本来构建网页和网站. 开发模式 ASP.NET 支持三种开发模式: Web Pages MVC Web Forms 单页面模型 模型视图控制器 事件驱动模型 Web Pages 最简单的 ASP.NET 模型. 类似 PHP 和 ASP. 内置了用于数据库.视频.社交媒体等的模板和帮助器. MVC MVC 将 web 应用程序分为三种不同的组件: 针对数据的模型 针对现实的视图 针对输入的控制器

ASP.NET MVC学习之路由篇(3)

原文:ASP.NET MVC学习之路由篇(3) 继ASP.NET MVC学习之路由篇(2)后继续学习. 11.根据路由输出链接       既然是网站开发自然少不了链接,我们已经学会了强大的路由,但是还缺少一步就是能够将这些路由的路径输出到页面,下面我们就开始学习如何输出路由路径. 首先我们的路由注册部分如下所示: 1 namespace MvcStudy 2 { 3 public class RouteConfig 4 { 5 public static void RegisterRoutes

ASP.NET MVC学习之过滤器篇(2)

原文:ASP.NET MVC学习之过滤器篇(2) 下面我们继续之前的ASP.NET MVC学习之过滤器篇(1)进行学习.   3.动作过滤器 顾名思义,这个过滤器就是在动作方法调用前与调用后响应的.我们可以在调用前更改实际调用的动作,也可以在动作调用完成之后更改最终返回的结果,当然很多人一定不太明白这个到底可以干什么, 下面我们举一个比较实际的例子:   相信理解过网站的安全的一定知道跨站请求(CSRF具体可以自行百度,这里我就不去解释了),当然也有解决方案,那就是给页面中增加一个识别码,当页面

ASP.NET MVC学习之过滤器篇(1)

原文:ASP.NET MVC学习之过滤器篇(1) 一.前言 继前面四篇ASP.NET MVC的随笔,我们继续向下学习.上一节我们学习了关于控制器的使用,本节我们将要学习如何使用过滤器控制用户访问页面.   二.正文 以下的示例建立在ASP.NET MVC 4之上(VS2012)   1.授权过滤器 只要涉及用户的网站,都一定会涉及到什么权限的用户可以访问哪个页面.对于新手而言可能都在每个页面中单独写这个功能方法,导致的后果就是大量重复的代码,并且不便于以后的变动.有用一定经验之后,就会采用集中控