2011-10-06 67 views
0

gridview控件的默认排序顺序是先升后降。现在下面我有代码来改变这一点。到现在为止还挺好。但是当我再次点击另一列时,它会将排序方向设置为再次上升。无论是哪一列,每次点击都会下降和上升。现在我真正想要的是任何列的第一次点击降序,如果我第二次点击任何列(第二次意味着连续),它应该是递增的。例如:我有两列,一个是工资,另一个是年龄。现在我点击薪水,第一个排序方向是降序,而不是默认升序(这是代码的作用)。现在,当我点击年龄时,它将排序方向切换为升序,我希望在更改为另一列时保持不变,但是如果我第二次再次点击薪水,它应该切换到升序(因为降序是第一次点击)。有什么建议么?Gridview控件排序方向

我的代码:

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; 
} 

回答

0

尝试检查,以确定是否的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; 
} 
+0

我认为这部分你所说的:if(!e.SortExpression = GridView1.SortExpression) { e.SortDirection = SortDirection.Descending; }应该只添加到我的代码中,在受保护的无效GridView1_OnSorting(对象发件人,GridViewSortEventArgs e)中的第一件事? 陈述 –

+0

因为我不确定,因为我从另一个论坛讨论中得到了我的代码。我只理解了一半的代码。 –

+0

我已根据您的上述代码更新了我的答案。它应该可以工作,但是我还没有能够测试它。 – jdavies