您的当前位置:首页正文

GridView自动排序

来源:个人技术集锦


GridView自带了数据排序功能。在设计视图下,只能对GridView的排序数据列和排序方向进行静态设置。在后台程序中,则需要用Attributes方式对GridView的这两个属性进行动态设置。

示例如下:

(前台)

<%@ Page Language=\"C#\" AutoEventWireup=\"true\" CodeFile=\"Default.a

spx.cs\" Inherits=\"_Default\" %>

无标题页

前台注意点:

需要对GridView启用AllowSorting、设置OnSorting事件,对需要排序的列设定SortExpression属性。

(后台)

using System;

using System.Data;

using System.Configuration;

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 _Default : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

// 设定初始排序参数值

// 错误的属性设置方法:SortExpression、SortDirection均是GridView只读属性,无法直接赋值。

//this.GridView1.SortExpression = \"id\";

//this.GridView1.SortDirection = \"ASC\";

// 正确的属性设置方法

this.GridView1.Attributes.Add(\"SortExpression\", \"id\");

this.GridView1.Attributes.Add(\"SortDirection\", \"ASC\");

// 绑定数据源到GridView

this.BindGridView();

}

}

///

/// GridView排序事件

///

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

// 从事件参数获取排序数据列

string sortExpression = e.SortExpression.ToString();

// 假定为排序方向为“顺序”

string sortDirection = \"ASC\";

// “ASC”与事件参数获取到的排序方向进行比较,进行GridView排序方向参数的修改

if (sortExpression == this.GridView1.Attributes[\"SortExpression\"])

{

//获得下一次的排序状态

sortDirection = (this.GridView1.Attributes[\"SortDirection\"].ToString() == sortDirection ? \"DESC\" : \"ASC\");

}

// 重新设定GridView排序数据列及排序方向

this.GridView1.Attributes[\"SortExpression\"] = sortExpression;

this.GridView1.Attributes[\"SortDirection\"] = sortDirection;

this.BindGridView();

}

///

/// 绑定到GridView

///

private void BindGridView()

{

// 获取GridView排序数据列及排序方向

string sortExpression = this.GridView1.Attributes[\"SortExpression\"];

string sortDirection = this.GridView1.Attributes[\"SortDirection\"];

// 调用业务数据获取方法

DataTable dtBind = this.getDB();

// 根据GridView排序数据列及排序方向设置显示的默认数据视图

if ((!string.IsNullOrEmpty(sortExpression)) && (!string.IsNullOrEmpty(sortDirection)))

{

dtBind.DefaultView.Sort = string.Format(\"{0} {1}\", sortExpression, sortDirection);

}

// GridView绑定并显示数据

this.GridView1.DataSource = dtBind;

this.GridView1.DataBind();

}

///

/// 获取数据源的方法

///

/// 数据源

private DataTable getDB()

{

DataTable dt = new DataTable();

dt.Columns.Add(\"id\");

dt.Columns.Add(\"name\");

dt.Columns.Add(\"age\");

dt.Rows.Add(new object[] { \"000001\", \"hekui\", \"26\" });

dt.Rows.Add(new object[] { \"000002\", \"zhangyu\", \"26\" });

dt.Rows.Add(new object[] { \"000003\", \"zhukundian\", \"27\" });

dt.Rows.Add(new object[] { \"000004\", \"liyang\", \"25\" });

dt.Rows.Add(new object[] { \"000005\", \"caili\", \"27\" });

return dt;

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容