gridview列排序功能

当使用非SqlDataSource的数据源绑定GridView时,需要手动实现排序功能。通过设置AllowSorting为True并处理GridView1_Sorting事件,自定义排序方向。文章介绍了如何创建一个GridViewSortDirection属性保存排序方向,以及在Sorting事件中根据用户选择调整排序方式,最后通过SortGridView方法对DataTable进行排序并重新绑定数据。

      gridview如果使用sqldatasource绑定数据集的话分页只需将gridview 属性设置为 AllowSorting="True" 即可,但是如果采用其它数据源绑定属性 AutoGenerateColumns  如果设置为false 那么上面的排序方法则行不通。必须自定义排序。

 

页面 gridview 设置 如下:

<asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting"></asp:GridView> 

 

后台cs代码

 

 

重点步骤:自定义GridView1_Sorting事件

第一,添加一个属性
public SortDirection GridViewSortDirection
{

get

{

if (ViewState["sortDirection"] == null)

ViewState["sortDirection"] = SortDirection.Ascending;

return (SortDirection) ViewState["sortDirection"];

}

set { ViewState["sortDirection"] = value; }

}

GridViewSortDirection
是一个简单的属性,用viewstate保存每次排序的方向

第二,GridView1_Sorting事件代码
 protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{

string sortExpression = e.SortExpression;

if (GridViewSortDirection == SortDirection.Ascending)

{

GridViewSortDirection = SortDirection.Descending;

SortGridView(sortExpression, DESCENDING);

}

else

{

GridViewSortDirection = SortDirection.Ascending;

SortGridView(sortExpression, ASCENDING);

}

}

在这里,首先得到用户点击要排序列的标题,然后判断当前gridviewsortdirection的属性值来判断,如果已经是升序的话,则设置GridViewSortDirection为降序,并调用一个sortgridview过程;否则默认是调用升序来排序;
 

第三,SortGridView方法,显示排序后的列表
 private void SortGridView(string sortExpression,string direction)
{

DataTable dt = GetData().Tables[0];

DataView dv = new DataView(dt);

dv.Sort = sortExpression + direction;

GridView1.DataSource = dv;

GridView1.DataBind();

}
在这里,接收两个参数,分别是sortExpressiondirection,然后构成dataview进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值