[转]GridView排序——微软提供Sort
本文转自: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
[转]GridView排序——微软提供Sort的更多相关文章
- 简单选择排序(Simple Selection Sort)
		body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ... 
- 排序合并连接(sort merge join)的原理
		排序合并连接(sort merge join)的原理 排序合并连接(sort merge join)的原理 排序合并连接(sort merge join) 访问次数:两张表都只会访 ... 
- 使用UI Automation实现自动化测试 --微软提供的控件Pattern
		微软提供的控件Pattern System.Windows.Automation 命名空间 System.Windows.Automation.BasePattern 为控件模式类提供基实现 Syst ... 
- [大牛翻译系列]Hadoop(5)MapReduce 排序:次排序(Secondary sort)
		4.2 排序(SORT) 在MapReduce中,排序的目的有两个: MapReduce可以通过排序将Map输出的键分组.然后每组键调用一次reduce. 在某些需要排序的特定场景中,用户可以将作业( ... 
- 微软提供的API的各个版本之间的区别
		First Floor Software这个diff lists非常方便的给出了微软提供的API的各个版本之间的区别,比如下表是.NET 4和.NET 4.5的API变化总结.我们可以看到.NET 4 ... 
- 微软提供了三个核心服务:Windows+Office 365+Azure
		微软提供了三个核心服务:Windows+Office 365+Azure 英语新闻来源:http://techcrunch.com/2014/11/10/microsofts-ceo-breaks-d ... 
- 《算法4》2.1 - 选择排序算法(Selection Sort), Python实现
		选择排序算法(Selection Sort)是排序算法的一种初级算法.虽然比较简单,但是基础,理解了有助于后面学习更高深算法,勿以勿小而不为. 排序算法的语言描述: 给定一组物体,根据他们的某种可量化 ... 
- 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的顺序输出,如果传入的是一个字符串,就将字符串反序输出。
		namespace test2 { class Program { /// <summary> /// 编写一个类,其中包含一个排序的方法Sort(),当传入的是一串整数,就按照从小到大的 ... 
- 简单选择排序 Selection Sort 和树形选择排序 Tree Selection Sort
		选择排序 Selection Sort 选择排序的基本思想是:每一趟在剩余未排序的若干记录中选取关键字最小的(也可以是最大的,本文中均考虑排升序)记录作为有序序列中下一个记录. 如第i趟选择排序就是在 ... 
随机推荐
- BI之SSAS完整实战教程6 -- 设计维度、细化维度上:创建维度定义特性关系
			前面我们使用过数据源向导.数据源视图向导.Cube向导来创建相应的对象. 本篇我们将学习使用维度向导来创建维度. 通过前面几个向导的学习,我们归纳一下共同点,主要分成两步 1. 使用某种对象类型的向导 ... 
- Liunx目录结构
			/bin: bin是Binary的缩写, 这个目录存放着最经常使用的命令. /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件. /dev :dev是Device ... 
- MAC OS设置JDK小结
			开始折腾mac pro,在网上找了些资料,自己也尝试了一下,特在这里做个小结. mac中JDK的位置 OSX默认的JDK /System/Library/Frameworks/JavaVM.frame ... 
- java int转byte和long转byte
			在网络编程中,出于节约带宽或者编码的需要,通常需要以原生方式处理long和int,而不是转换为string. public class ByteOrderUtils { public static b ... 
- struts2中valueStack,stackContext以及actionContext的关系
			一,首先给出三者的定义 1.valueStack: 里面存放的是Action类中通过set方法设置的属性值(表单传过来的值等),由OGNL框架实现; 2.stackContext: 也是用来存值的,s ... 
- 六个创建模式之工厂方法模式(Factory Method Pattern)
			问题: 在使用简单工厂模式的时候,如果添加新的产品类,则必需修改工厂类,违反了开闭原则. 定义: 定义一个用于创建对象的接口,让子类决定具体实例化哪个产品类.此时工厂和产品都具有相同的继承结构,抽象产 ... 
- ubuntu vps 安装java
			Introduction Java is a programming technology originally developed by Sun Microsystems and later acq ... 
- 【特别推荐】Node.js 入门教程和学习资源汇总
			这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ... 
- andriod 带看括弧的计算器
			界面 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=& ... 
- SharePoint 2013 中代码创建列表查阅项字段
			1.首先,打开VS创建两个List Definition,分别是Address和City,如下图: 2.City列表里修改Title为City Name,其实内部名称还是Title,注意一下: 3.给 ... 
