gridview控件上的默认排序顺序是先升序,然后降序。现在,在下面我有代码来改变这一点。到目前一切尚好。但当我再次单击另一列时,它会再次将排序方向设置为升序。它在每次点击时都会在降序和升序之间切换,无论是哪一列。现在我真正想要的是第一次单击任何列都是降序的,如果我第二次单击任何列(第二次意味着连续),它应该是升序的。例如:我有两列,一列是薪水,另一列是年龄。现在我单击salary,第一个排序方向是降序,而不是默认的升序(代码就是这样做的)。现在当我点击年龄时,它会将排序方向切换为升序,当我切换到另一列时,我希望它保持不变,但如果我第二次单击薪水,它应该切换为升序(因为第一次单击是降序)。有什么建议吗?
我的代码:
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set
{
ViewState["sortDirection"] = value;
}
}
protected void GridView1_OnSorting(object sender, GridViewSortEventArgs e)
{
if (ViewState["sortDirection"] == null)
{
e.SortDirection = SortDirection.Descending;
}
else if (GridViewSortDirection == SortDirection.Ascending)
{
e.SortDirection = SortDirection.Descending;
}
else if (GridViewSortDirection == SortDirection.Descending)
{
e.SortDirection = SortDirection.Ascending;
}
GridViewSortDirection = e.SortDirection;
}发布于 2011-10-06 22:46:32
尝试检查以确定SortExpression是否已从先前设置的SortExpression更改,如果已更改,则将SortDirection默认为降序。
protected void GridView1_OnSorting(object sender, GridViewSortEventArgs e)
{
if (e.SortExpression != GridView1.SortExpression)
{
e.SortDirection = SortDirection.Descending;
GridViewSortDirection = e.SortDirection;
}
else if (GridViewSortDirection == SortDirection.Ascending)
{
e.SortDirection = SortDirection.Descending;
}
else if (GridViewSortDirection == SortDirection.Descending)
{
e.SortDirection = SortDirection.Ascending;
}
GridViewSortDirection = e.SortDirection;
}https://stackoverflow.com/questions/7675682
复制相似问题