2012-06-15 6 views

Antwort

8

dachte ich, einen Ausweg, es zu tun, nicht sicher, ob es der beste Weg ist. Aber im Grunde, wenn das Sortierereignis ausgelöst wird und die aktuelle SortDirection null ist, setze ich es auf Ascending, so dass der Standardsortierer die SortDirection auf absteigend umkehrt, und dies geschieht nur bei der ersten Sortierung, da nur dann die SortDirection null ist.

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

Warum können wir nicht einfach sagen: "e.Column.SortDirection = ListSortDirection.Ascending"? – Joe

+0

@Joe hey, es ist, weil ich es nur auf ListSortDirection.Ascending setzen möchte, wenn der Wert nie vorher gesetzt wurde (SortDirection == null) ... im Grunde ist der Trick das erste Mal, wenn Sie auf die Sortierrichtung klicken, wird dies ausgelöst Ereignis, Sie setzen die aktuelle Null SortDirection auf Ascending, so dass das Raster dann sieht, dass es derzeit aufsteigend ist und dann dreht es es um Absteigend ... –

+0

oh ... Ich sehe es jetzt ... Ich denke, ich muss falsch haben lies deinen Code beim ersten Mal. – Joe

0

Ich habe eine ähnliche Sache in Winforms gemacht. Behandeln Sie das DataGrid.Storing-Ereignis und kehren Sie dann die Sortierreihenfolge programmatisch um, wenn es nicht "none" ist.

prüfen Link für das, was aussieht wie in WinForms: DataGridViewColumn initial sort direction

0

Hier eine erweiterte Version der angenommenen Antwort (Ich bin kein Fan dieser kompakten Notation):

private void _myGrid_Sorting(object sender, DataGridSortingEventArgs e) 
{ 
    if (e.Column.SortDirection == null) 
     e.Column.SortDirection = ListSortDirection.Ascending; 
} 
Verwandte Themen