Wie kann ich Sortieren, WinForms DataGridView auf eine CheckBox-Spalte?
So, ich hatte eine DataGridView
mit automatisch generierten Spalten, von denen einige wurden checkbox-Spalten. Wenn ich klickte auf das Kontrollkästchen Spaltenköpfe, es hat nicht Sortieren. Ich habe recherchiert und es stellt sich heraus, dass Microsoft nicht zählen die automatische Sortierung für checkbox-Spalten... ich denke, Das ist absurd--wie schwer ist es, zu Sortieren, geprüft /nicht geprüft?
Wie kann man eine DataGridView
zu Sortieren Kontrollkästchen Spalten für Sie?
Hier ist, was ich kam mit:
- Jemand eine andere Lösung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man auch einfach so machen:
Arbeitet in vb.net 4.0
Müssen Sie nur fügen Sie die nächsten Zeilen, um den code der form (getestet in VB.NET 2013)
Zuerst müssen Sie Haken in zwei Veranstaltungen, die Spalte Datum der Veranstaltung und die überschrift der Spalte klicken Sie auf event:
Aktivieren Sie dann die programmatische Sortierung für jedes Kontrollkästchen-Spalte:
Dann einen handler erstellen, der Art eine checkbox-Spalte, aber tun nichts für Spalten, die mit Ihrer eigenen Sortierung:
Und dort gehen Sie! Jetzt war es wirklich so schwer, Microsoft? 😉
Ich bin mir nicht sicher über VB, aber für C# in VS2012 in dem designer können Sie auch die SortMode.
Rechten Maustaste auf das "DataGridView" und gehen Sie auf "Spalten Bearbeiten".
Gibt es ein drop-down für die SortMode mit einer Auswahl von NotSortable, Automatischen und Programmgesteuerten.
Es scheint, dass die Standardeinstellung für die meisten Spalten ist Automatik, aber für Checkboxen (boolean) Spalten die Standardeinstellung ist NotSortable.
Erstellt habe ich eine extension-Methode, die Sie wiederverwenden können, Sie müssen nur benutzen Sie es während des form-load-Ereignis.
------ Werden Sie sicher, dass Ihre Datenquelle ist sortierbar. ------
Wenn Sie verbindlich sind die "DataGridView", um eine einfache Liste, es wird NICHT FUNKTIONIEREN, müssen Sie etwas anderes verwenden, empfehle ich Ihnen,diese SortableBindingList; Sie können den pass direkt Ihre ursprüngliche Liste IEnumerable der SortableBindingList Konstruktor.
Laden:
Dann fügen Sie diese in eine statische Klasse verwenden Sie es als eine ExtensionMethod..
Dann Magie passieren wird 🙂