最近在维护一个N年老项目,想着在Gridview 设置 AllowSorting="true" 但排序还不管用。
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False"
CellPadding="4" CssClass ="gridview"
onpageindexchanging="GridView1_PageIndexChanging" PageSize="20"
EnableSortingAndPagingCallbacks ="false" Width="97%"
AllowSorting="true"
OnSorting="GvList_Sorting"
>
后来,发现必须指定要排序的列才行的。 这样的列头下面鼠标移动上去就会出现一个下滑列。
下面分享下排序的代码:
protected void GvList_Sorting(object sender, GridViewSortEventArgs e)
{
Console.WriteLine("单击排序。。。");
string sortExpression = e.SortExpression;
if (GridViewSortDirection == SortDirection.Ascending)
{
GridViewSortDirection = SortDirection.Descending;
SortGridView(sortExpression, "desc");
}
else
{
GridViewSortDirection = SortDirection.Ascending;
SortGridView(sortExpression, "asc");
}
}
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
private void SortGridView(string sortExpression, string direction)
{
DataTable dataTable = ((DataSet)GridView1.DataSource).Tables[0];
//dataTable.DefaultView.Sort = "Id DESC";//按Id倒序
//dataTable.DefaultView.Sort = "Id DESC,Name desc";//按Id倒序和Name倒序
dataTable.DefaultView.Sort = sortExpression+" "+ direction;//按Id倒序
dataTable = dataTable.DefaultView.ToTable();
GridView1.DataSource = dataTable;
GridView1.DataBind();
}
至此,点击列头的文字,即可排序了。升序和倒叙,都可以。
标签:GridViewSortDirection,GridView,sortExpression,Id,SortDirection,asp,AllowSorting, From: https://blog.51cto.com/51souta/5806017