本文转自:http://www.cnblogs.com/eva_2010/articles/1995646.html

在GridView中,根据其中的某列进行排序。

1. 页面:AllowSorting=“True” onsorting=“ ”,SortExpression="列名"

<asp:GridView ID="grdResult" runat="server" CssClass="gridviewstyle" AutoGenerateColumns="False" 

AllowSorting="True" onsorting="grdResult_Sorting">

         <Columns>
<asp:CommandField HeaderText="Edit" ShowEditButton="True">
<ControlStyle Width="150px" />
</asp:CommandField>
<asp:BoundField DataField="Id" HeaderText="ID" SortExpression="Id">
<ControlStyle Width="20px" />
<HeaderStyle Width="80px" ForeColor="White" />
</asp:BoundField>
<asp:BoundField DataField="Name" HeaderText="Name" >
<ControlStyle Width="50px" />
<HeaderStyle Width="120px" Font-Underline="True" />
</asp:BoundField>
</Columns> </asp:GridView>

2.后台代码:

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.grdResult.Attributes.Add("SortExpression", "Id");
this.grdResult.Attributes.Add("SortDirection", "ASC");
BindGridInfo();
}
}
private List<Test> GetTestData()
{
Test test1 = new Test { Id = , Name = "Test1" };
Test test2 = new Test { Id = , Name = "Test2" };
Test test3 = new Test { Id = , Name = "Test3" };
Test test4 = new Test { Id = , Name = "Test4" };
List<Test> lstTest = new List<Test>();
lstTest.Add(test1);
lstTest.Add(test2);
lstTest.Add(test3);
lstTest.Add(test4);
return lstTest;
}
private DataTable GetData()
{
DataTable dtTest = new DataTable();
dtTest.Columns.Add("Id");
dtTest.Columns.Add("Name");
dtTest.Rows.Add(, "");
dtTest.Rows.Add(, "");
dtTest.Rows.Add(, "");
dtTest.Rows.Add(, ""); return dtTest;
}
//数据绑定,如果返回数据源是DataTable则可以直接排序,如果不是则要先转换为DataTable格式数据源
private void BindGridInfo()
{
List<Test> lstTest = GetTestData();
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("Name");
for (int i = ; i < lstTest.Count; i++)
{
DataRow dr = dt.NewRow();
dr["Id"] = lstTest[i].Id;
dr["Name"] = lstTest[i].Name;
dt.Rows.Add(dr);
}
string sortExpression = this.grdResult.Attributes["SortExpression"];
string sortDirection = this.grdResult.Attributes["SortDirection"]; DataTable dtSource = GetData();
if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))
{
dt.DefaultView.Sort = string.Format("{0} {1}", sortExpression, sortDirection);
}
grdResult.DataSource = dt;// dtSource;
grdResult.DataBind();
}
Class Test:  

    /// <summary>
/// define a container class
/// </summary>
private class Test
{
private int _id;
/// <summary>
/// test id
/// </summary>
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _name;
/// <summary>
/// test name
/// </summary>
public string Name
{
get { return _name; }
set { _name = value; }
}
}
/// <summary>
/// sorting
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void grdResult_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression.ToString();
string sortDirection = "ASC";
if (sortExpression == this.grdResult.Attributes["SortExpression"])
{
sortDirection = (this.grdResult.Attributes["SortDirection"].ToString() == sortDirection) ? "DESC" : "ASC";
}
this.grdResult.Attributes["SortExpression"] = sortExpression;
this.grdResult.Attributes["SortDirection"] = sortDirection;
this.BindGridInfo();
}

参考: http://www.cnblogs.com/heekui/archive/2008/06/02/1212051.html

Be the change you want to see in the world.

[转]GridView排序——微软提供Sort的更多相关文章

  1. 简单选择排序(Simple Selection Sort)

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  2. 排序合并连接(sort merge join)的原理

    排序合并连接(sort merge join)的原理 排序合并连接(sort merge join)的原理     排序合并连接(sort merge join)       访问次数:两张表都只会访 ...

  3. 使用UI Automation实现自动化测试 --微软提供的控件Pattern

    微软提供的控件Pattern System.Windows.Automation 命名空间 System.Windows.Automation.BasePattern 为控件模式类提供基实现 Syst ...

  4. [大牛翻译系列]Hadoop(5)MapReduce 排序:次排序(Secondary sort)

    4.2 排序(SORT) 在MapReduce中,排序的目的有两个: MapReduce可以通过排序将Map输出的键分组.然后每组键调用一次reduce. 在某些需要排序的特定场景中,用户可以将作业( ...

  5. 微软提供的API的各个版本之间的区别

    First Floor Software这个diff lists非常方便的给出了微软提供的API的各个版本之间的区别,比如下表是.NET 4和.NET 4.5的API变化总结.我们可以看到.NET 4 ...

  6. 微软提供了三个核心服务:Windows+Office 365+Azure

    微软提供了三个核心服务:Windows+Office 365+Azure 英语新闻来源:http://techcrunch.com/2014/11/10/microsofts-ceo-breaks-d ...

  7. 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现

    选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ...

  8. 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。

    namespace test2 { class Program { /// <summary> /// 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的 ...

  9. 简单选择排序 Selection Sort 和树形选择排序 Tree Selection Sort

    选择排序 Selection Sort 选择排序的基本思想是:每一趟在剩余未排序的若干记录中选取关键字最小的(也可以是最大的,本文中均考虑排升序)记录作为有序序列中下一个记录. 如第i趟选择排序就是在 ...

随机推荐

  1. VB 2015 的 闭包(Closure)

    是的,你没看错,这篇文章讲的不是 ECMAScript . 目前 VB 14 比 C# 6 领先的功能里面,有个即将在 C# 7 实现的功能,叫做"本地方法".这个功能与" ...

  2. js用正则表达式验证用户和密码的安全性,生成随机验证码

    制作了一个表单,表单验证用户.密码.随机验证码 html页面

  3. 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片

    [源码下载] 重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片 作者:webabcd 介绍重新想象 Win ...

  4. jquery 拓展

    1. 概述 jquery允许拓展自定义的方法, 绑定到$.fn对象上, 编写一个jQuery插件的原则: 给$.fn绑定函数,实现插件的代码逻辑: 插件函数最后要return this;以支持链式调用 ...

  5. ASP.NET MVC:窗体身份验证及角色权限管理示例

    ASP.NET MVC 建立 ASP.NET 基础之上,很多 ASP.NET 的特性(如窗体身份验证.成员资格)在 MVC 中可以直接使用.本文旨在提供可参考的代码,不会涉及这方面太多理论的知识. 本 ...

  6. Sublime Text3 快捷键汇总

    Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下 ...

  7. IOS程序开发中-跳转到 发送短信界面 实现发短信

    前言:我发现我标题取的不好,谁帮我取个承接上下文的标题?评论一下,我改 项目需求:在程序开发中,我们需要在某个程序里面发送一些短信验证(不是接收短信验证,关于短信验证,传送门:http://www.c ...

  8. NDK、SDK以及JNI的关系

    最近由于项目的需要,使用到了Android的NDK技术,对项目核心算法跨平台的移植.简答而言,就是使用C对原来的算法进行了改进,并集成到原 来的app项目里. 从前的项目一直没有使用NDK进行开发的机 ...

  9. 【读书笔记】iOS-属性列表

    一,在Cocoa中,有一类名为属性列表的对象,常简写为plist.这些列表包含Cocoa知道如何操作的一组对象.具体来讲,Cocoa如何知道将这们保存在文件中并进行加载.属性列表类包括NSArray, ...

  10. apache-virtual host

    NameVirtualHost xxx.xxx.xxx.xxx:80<VirtualHost xxx.xxx.xxx.xxx:80>        ServerName xxx.xxx.x ...