ASP.NET GirdView学习之三 排序2011-12-18 博客园 孟冬伊要先设置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;1213public partial class GridViewSortingTest : System.Web.UI.Page14{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 }2930 //按照邮编和地址进行排序比较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