asp.net GridView排序简单实现

时间:2022-09-12 19:14:52

前台: 
代码 

复制代码代码如下:


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewSort.aspx.cs" Inherits="GridViewSort" %> 
<!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>GridView排序简单实现</title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
<asp:GridView ID="gdvSort" runat="server" OnSorting="gdvSort_Sorting"> 
</asp:GridView> 
</div> 
</form> 
</body> 
</html> 


后台: 

代码 

复制代码代码如下:


using System; 
using System.Data; 
using System.Configuration; 
using System.Collections; 
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 GridViewSort : System.Web.UI.Page 

protected void Page_Load(object sender, EventArgs e) 

if (!IsPostBack) 

ViewState["SortOrder"] = "PID"; 
ViewState["OrderDire"] = "Desc"; 
Bind(); 


private void Bind() 

gdvSort.AllowSorting = true; 
DataView dv = getDt().DefaultView; 
dv.Sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"]; 
gdvSort.DataSource = dv; 
gdvSort.DataBind(); 

/// <summary> 
/// 连数据库麻烦,直接构造一个DataTable 
/// </summary> 
/// <returns></returns> 
private DataTable getDt() 

DataTable dt = new DataTable(); 
dt.Columns.Add("PID", typeof(System.Int32)); 
dt.Columns.Add("UserName", typeof(System.String)); 
for (int i = 0; i < 10; i++) 

DataRow dr = dt.NewRow(); 
dr["PID"] = i; 
dr["UserName"] = "姓名" + i; 
dt.Rows.Add(dr); 

return dt; 

protected void gdvSort_Sorting(object sender, GridViewSortEventArgs e) 

string sPage = e.SortExpression; 
if (ViewState["SortOrder"].ToString() == sPage) 

if (ViewState["OrderDire"].ToString() == "Desc") 

ViewState["OrderDire"] = "Asc"; 

else 

ViewState["OrderDire"] = "Desc"; 


else 
ViewState["SortOrder"] = e.SortExpression; 
Bind();