在gridview 当中我们时常会要对各列进行排序,下面是排序的代码:
#region GridView排序
protected void GridViewRowCreated(object sender, GridViewRowEventArgs e, GridView gvData)
{
if (e.Row.RowType == DataControlRowType.Header) //如果是表头
{
foreach (TableCell MyHeader in e.Row.Cells) //对每一单元格
{
if (MyHeader.HasControls())
{
if (((LinkButton)MyHeader.Controls[0]).CommandArgument == GridViewSortExpression)
{
if (gvData.SortDirection == GridViewSortDirection) //依排序方向加入方向箭头
MyHeader.Controls.Add(new LiteralControl("↑"));
else
MyHeader.Controls.Add(new LiteralControl("↓"));
}
}
}
}
}
protected string GridViewSorting(object sender, GridViewSortEventArgs e)
{
if (GridViewSortDirection.Equals(SortDirection.Ascending))
{
GridViewSortDirection = SortDirection.Descending;
GridViewSortExpression = e.SortExpression;
return e.SortExpression + " desc";
}
else
{
GridViewSortDirection = SortDirection.Ascending;
GridViewSortExpression = e.SortExpression;
return e.SortExpression + " asc";
}
}
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
public string GridViewSortExpression
{
get
{
if (ViewState["sortExpression"] == null)
ViewState["sortExpression"] = "";
return ViewState["sortExpression"].ToString();
}
set { ViewState["sortExpression"] = value; }
}
#endregion
然后在gridview 的 GridView_RowCreated里调用上面的GridViewRowCreated。。。。在 GridView_Sorting事件里调用gridview 的绑定的方法(最好带一个排序的参数---调用上面的ViewSorting方法作为这个参数).