Zum Sortieren von Listview-Spalten, wenn die Kopfzeile geklickt wird
Ich Schreibe ein Hausaufgaben-Planer und ich habe ein ListView-element.
Ich bin auf der Suche nach einer code-snippet, das es mir erlaubt, zu ordnen Sie die Spalten in alphabetischer Reihenfolge, wenn ich auf den Spaltenkopf. Wenn es bereits in aufsteigender Reihenfolge sortiert, dann wechseln Sie zu absteigend und Umgekehrt, dann Sortieren Sie nach der Standard - /erst eins, d.h. "status" in der Abbildung unten.
Ich habe gegoogelt und nichts gefunden habe, die ich verwenden könnte, können Sie mir helfen?
Private Sub ColumnClick(ByVal sender As Object, _
ByVal e As System.Windows.Forms.ColumnClickEventArgs) _
Handles lvKalender.ColumnClick
Select Case e.Column
' Nach Namen sortieren
Case 0
If lvKalender.Columns.Item(0).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(0).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(0).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(0).ListView.Sorting = SortOrder.Ascending
End If
Case 1
If (1).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(1).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(1).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(1).ListView.Sorting = SortOrder.Ascending
End If
Case 2
If lvKalender.Columns.Item(2).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(2).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(2).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(2).ListView.Sorting = SortOrder.Ascending
End If
Case 3
If lvKalender.Columns.Item(3).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(3).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(3).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(3).ListView.Sorting = SortOrder.Ascending
End If
Case 4
If lvKalender.Columns.Item(4).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(4).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(4).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(4).ListView.Sorting = SortOrder.Ascending
End If
Case 5
If lvKalender.Columns.Item(5).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(5).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(5).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(5).ListView.Sorting = SortOrder.Ascending
End If
Case 6
If lvKalender.Columns.Item(6).ListView.Sorting <> SortOrder.Descending Then
lvKalender.Columns.Item(6).ListView.Sorting = SortOrder.Descending
ElseIf lvKalender.Columns.Item(6).ListView.Sorting <> SortOrder.Ascending Then
lvKalender.Columns.Item(6).ListView.Sorting = SortOrder.Ascending
End If
End Select
End Sub
möchten Sie vielleicht zu übersetzen
Bitte schreiben Sie in Englisch! 🙂
sorry erste tiem und ich haben übersetzt mit googletranslator
Lassen Sie mich raten. Sie wollen zum Sortieren eines ListView-Spalte abhängig von deren Inhalt (Daten, zahlen, strings)?
Nein, es sind alle Saiten einmal die Stunde = stunde sind ein integer date ist ein string, weil ich schrieb die Daten in mysql
Bitte schreiben Sie in Englisch! 🙂
sorry erste tiem und ich haben übersetzt mit googletranslator
Lassen Sie mich raten. Sie wollen zum Sortieren eines ListView-Spalte abhängig von deren Inhalt (Daten, zahlen, strings)?
Nein, es sind alle Saiten einmal die Stunde = stunde sind ein integer date ist ein string, weil ich schrieb die Daten in mysql
InformationsquelleAutor Florian Hofmeister | 2014-08-19
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich verstehe Ihr problem, Sie wollen zu Sortieren, eine Spalte mit Datumsangaben (und vielleicht ein paar Werte???) in einem
ListView
. Das problem ist, dass alles in einemListView
ist string/text. Einige Unterpunkte (cols) kann Aussehen wie Termine, aber das ist nur weil das ist, wie Ihr Gehirn übersetzt/interpretiert Sie - Sie sind eigentlich strings.Die Auswirkung davon ist, dass die Sortierung text, die zahlen nur selten klappt. Zum Beispiel
"90"
wird immer irgendwie höher als"300"
weil"9"
>"3"
, und"19.08.2014"
Sortieren höher als"10.01.2019"
. Der Wert von Ziffern und zahlen ist nicht das gleiche.Sortieren durch etwas anderes als einen text, müssen Sie eine
ListViewItemSorter
. Dieser ist für Termine::
COL_TO_SORT
wäre die Spalte/Unterposition index, den Sie Sortieren möchten, die Datumsangaben enthält.Sort_Order
wäre die standard WinForms-SortOrder (SortOrder.Ascending
etc)Vergleichen zu anderen Datentypen
Decimal
zum Beispiel, duplizieren Sie dieComparer
und ändern Sie die 3 Linien tun der Vergleich:InformationsquelleAutor Nat Pongjardenlarp