Die Sortierung von benutzerdefinierten Spalten in einem DataGridView an eine BindingList

Ich habe eine DataGridView die Daten an eine BindingList. Mein DataGridView hat auch eine Reihe von benutzerdefinierten Spalten, die habe ich Hinzugefügt. Diese sind nicht Daten-gebunden, sondern werden generiert basierend auf Artikel in meinem BindingList (sprich: einen Eintrag in mein BindingList der Typ a hat Eine Eigenschaft vom Typ B; meine benutzerdefinierte Spalte B. Name (EDIT: In diesem Fall "Name" ist eine Eigenschaft der Klasse B, und damit das Eigentum der durch die Spalte dargestellt wird, nicht direkt gefunden, in der die Elemente in der BindingList)).

Ich muss in der Lage sein, zu Sortieren alle Spalten in mein DataGridView. DataGridView hat zwei Art-Methoden: Sort(IComparer), und Sort(DataGridViewColumn, ListSortDirection). Ich benutze die zweite für meine Daten Sortieren-gebundenen Spalten, aber natürlich löst eine Ausnahme aus, wenn auf einer nicht-Daten-gebundene Spalte. Die erste Methode eine Ausnahme werfen, wenn die DataSource ist nicht null.

Also weder von DataGridView built-in Art Methoden funktioniert soweit ich das sagen kann. Wie sonst kann ich Sortiere meine grid basiert auf meine benutzerdefinierte Spalten?

EDIT:

Was ich im moment tun ist, behandeln Sie das klicken auf die Kopfzeile der Spalte, nach der Anleitung hier gesehen: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.columnheadermouseclick.aspx

Das problem entsteht bei der Zeile:

dataGridView1.Sort(newColumn, direction);

Dinge funktionieren toll, wenn newColumn besitzt eine der Eigenschaften eines Objekts in meinem BindingList. Aber um das zu Sortieren, eine meiner benutzerdefinierten Spalten, werde ich haben, um zu vermeiden, diese Linie zu verzichten und einen anderen Weg finden, um die Daten zu Sortieren grid basierend auf dieser Spalte. Heißt das, dass ich meine eigenen Funktion Sortieren? Das scheint, wie es sein kann, ein gigantischer Schmerz.

InformationsquelleAutor C Walker | 2011-05-16

Schreibe einen Kommentar