2012-06-15 30 views

回答

8

我想出了一個辦法做到這一點,不知道這是否是最好的方式。但基本上,當排序事件觸發並且當前SortDirection爲空時,我將它設置爲Ascending,以便默認排序器將SortDirection反轉爲遞減,並且這僅發生在第一次排序上,因爲這是SortDirection爲空的唯一時間。

myGrid.Sorting += (s, e) => e.Column.SortDirection = e.Column.SortDirection ?? ListSortDirection.Ascending; 
+0

爲什麼我們不能只說:「e.Column.SortDirection = ListSortDirection.Ascending」? – Joe

+0

@Joe嘿,它是因爲我只想將它設置爲ListSortDirection.Ascending,如果這個值以前從未設置過(SortDirection == null)......基本上這個技巧是第一次點擊排序方向時它會觸發這個事件中,您將當前的空SortDirection設置爲升序,以便網格可以看到它當前正在升序,然後將其翻轉爲降序... –

+0

哦...我現在看到了...我想我必須有錯誤 - 我第一次看到它時閱讀你的代碼。 – Joe

0

我在Winforms中做過類似的事情。處理DataGrid.Sorting事件,然後以編程方式反轉排序順序,如果它不是「無」。

檢查這個鏈接是什麼,這看起來像在的WinForms: DataGridViewColumn initial sort direction

0

這裏的我接受的答案的擴展版本(我不是那種緊湊符號的粉絲):

private void _myGrid_Sorting(object sender, DataGridSortingEventArgs e) 
{ 
    if (e.Column.SortDirection == null) 
     e.Column.SortDirection = ListSortDirection.Ascending; 
} 
相關問題