Einträge in ListView sortieren

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Einträge in ListView sortieren

    Hallo!

    Ich habe ich eine Listview mit folgenden Einträgen:

    Spalte 1: Zahlenwert
    Spalte 2: String
    Spalte 3: Zahlenwert
    Spalte 4: Gleitkommazahlen (mit 2 Stellen hinter dem Komma)
    Spalte 5: Zahlenwert

    Die Einträge in Spalte 4 haben den Zusatz "%"
    Die Einträge in Spalte 5 haben den Zusatz "€"

    Wie kann ich die Einträge Sortieren?
    @Selter98 indem Du das ListView rausschmeißt und da ein DataGrudView (ggf. mit ner DataTable als DataSource) reinbaust und dann einfach auf den Header der Spalte klickst. ;)
    oder Du sortierst sie mit nem ListViewComparer:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class ListViewComparer
    2. Implements IComparer
    3. Private cicComparer As CaseInsensitiveComparer
    4. Public Sub New(ByVal ParentListView As ListView)
    5. Me.SortColumn = 0
    6. Me.SortOrder = SortOrder.None
    7. Me.cicComparer = New CaseInsensitiveComparer()
    8. ParentListView.ListViewItemSorter = Me
    9. End Sub
    10. Public Property SortOrder() As SortOrder
    11. Public Property SortColumn() As Integer
    12. Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements IComparer.Compare
    13. Dim compareResult As Integer
    14. Dim listviewX As ListViewItem, listviewY As ListViewItem
    15. listviewX = CType(x, ListViewItem)
    16. listviewY = CType(y, ListViewItem)
    17. compareResult = cicComparer.Compare(listviewX.SubItems(Me.SortColumn).Text, listviewY.SubItems(Me.SortColumn).Text)
    18. If SortOrder = SortOrder.Ascending Then
    19. Return compareResult
    20. ElseIf SortOrder = SortOrder.Descending Then
    21. Return -compareResult
    22. Else
    23. Return 0
    24. End If
    25. End Function
    26. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Selter98 schrieb:

    Ich habe ich eine Listview mit folgenden Einträgen:

    Spalte 1: Zahlenwert
    Spalte 2: String
    Spalte 3: Zahlenwert
    Spalte 4: Gleitkommazahlen (mit 2 Stellen hinter dem Komma)
    Spalte 5: Zahlenwert
    Hast du nicht.
    ListView kennt nur einen Datentyp: String.

    Abhilfe hat RFG dir ja schon genannt.

    Selter98 schrieb:

    da hier der Spieler die Felder editieren kann
    Wenn das Deine einzige Sorge ist:
    Nimm ein DGV und mach die entsprechende Spalte ReadOnly.
    docs.microsoft.com/de-de/dotne…nly?view=netframework-4.8
    Und komm jetzt nicht mit der nächsten Ausrede. ;)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!