2024年4月21日发(作者:)

GridView自动排序

GridView自带了数据排序功能。在设计视图下,只能对GridView的排序数据列和排序方向进行静态设

置。在后台程序中,则需要用Attributes方式对GridView的这两个属性进行动态设置。

示例如下:

(前台)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="" Inhe

rits="_Default" %>

g/TR/xhtml1/DTD/">

无标题页

Padding="4" ForeColor="#333333" GridLines="None" AllowSorting="True" OnSorting="Gri

dView1_Sorting">

me" />

" />

" />

33" />

前台注意点:

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

性。

(后台)

using System;

using ;

using uration;

using ;

using ty;

using ;

using trols;

using ts;

using ntrols;

public partial class _Default :

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack)

{

// 设定初始排序参数值

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

接赋值。

//pression = "id";

//rection = "ASC";

// 正确的属性设置方法

("SortExpression", "id");

("SortDirection", "ASC");

// 绑定数据源到GridView

idView();

}

}

///

/// GridView排序事件

///

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

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

string sortExpression = ng();

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

string sortDirection = "ASC";

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

if (sortExpression == utes["SortExpression"])

{

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

sortDirection = (utes["SortDirection"].ToString() == sortDirec

tion ? "DESC" : "ASC");

}

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

utes["SortExpression"] = sortExpression;

utes["SortDirection"] = sortDirection;

idView();

}

///

/// 绑定到GridView

///

private void BindGridView()

{

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

string sortExpression = utes["SortExpression"];

string sortDirection = utes["SortDirection"];

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

DataTable dtBind = ();

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

if ((!OrEmpty(sortExpression)) && (!OrEmpty(sortDirection)))

{

= ("{0} {1}", sortExpression, sortDirection);

}

// GridView绑定并显示数据

urce = dtBind;

nd();

}

///

/// 获取数据源的方法

///

/// 数据源

private DataTable getDB()

{

DataTable dt = new DataTable();

("id");

("name");

("age");

(new object[] { "000001", "hekui", "26" });

(new object[] { "000002", "zhangyu", "26" });

(new object[] { "000003", "zhukundian", "27" });

(new object[] { "000004", "liyang", "25" });

(new object[] { "000005", "caili", "27" });

return dt;

}

}