前台代码:
<asp:GridView ID="GView1" runat="server" Height="10px" Width="950px" AllowSorting="true"
OnSorting="GridView1_Sorting">
</asp:GridView>
注解:
AllowSorting="true" //该属性设置将使用控件的排序功能
OnSorting="GridView1_Sorting" //调用排序的方法实现
后台代码:
排序实现的方法:
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending) //设置排序方向
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression, " DESC");
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, " ASC");
}
}
注解:
//GridViewSortDirection就是接下来定义的函数名
//SortGridView也是下面定义的函数
protected SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
// ViewState["sortDirection"]可以获取到页面GridView中sortDirection属性的值
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
protected void SortGridView(string sortExpression, string direction)
{
String sql = “select id,name,score1,score2,total from dual”;
DataTable dat1 = new Dbind().SelectFormForum(sql);
//查找数据源,因为我们是要对已经呈现在页面上的报表信息按字段进行排序,所以我们在这里获取的
//数据集应该和页面呈现时调用的是一样的,也就是将一开始的查询从新走了一遍,同时在sql语句
//加入了相对应字段的排序代码,然后再次绑定到GridView控件中呈现出来.
// new Dbind().SelectFormForum(sql)只是用户自定义的执行查询的功能函数
DataView dv = new DataView(dat1);
dv.Sort = sortExpression + direction; //设置排序的字段和排序方式
GView1.DataSource = dv;
GView1.DataBind();
}
执行操作流程:
1. 点击某个字段的标题时,触发了函数GridView1_Sorting
2. 在函数GridView1_Sorting中调用GridViewSortDirection函数去判断排序方式,进而去执行对应的排序方式.
3. GridViewSortDirection函数可以获取页面设置控件的排序方式
4. 调用SortGridView函数,查询出数据集,拼接字段及其排序方式,加入到控件属性中,绑定数据源