2011-10-06 66 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