ListView: Sortierungen

Das ListView-Steuerelement bietet standardmäßig keine Möglichkeit, die angezeigten Einträge nach dem Inhalt zu sortieren. Wie Sie eine Funktion zum Sortieren der Daten hinzufügen, zeigen wir Ihnen anhand zweier Beispiele. Das erste nutzt einfache Schaltflächen, um die Daten nach dem Inhalt einer bestimmten Spalte zu sortieren. Die zweite sieht etwas professioneller aus und fügt jeder Spalte die Möglichkeit hinzu, die enthaltenen Daten per Mausklick auf den Spaltenkopf abwechselnd auf- oder absteigend zu sortieren.

Voraussetzung

Wir setzen auf dem Beispielprojekt an, das wir mi Artikel Das ListView-Steuerelement beschrieben haben. Hier haben wir ein ListView-Element mit den Daten einer Auflistung namens Adressen mit Elementen des Typs Adresse gefüllt.

Sortierung per Klick auf die Spaltenköpfe

Das Listenfeld im Windows Explorer liefert die Möglichkeit, per Klick auf die Spaltenköpfe in der Dateiliste die Sortierung anzupassen (siehe Bild 1). Dies wollen wir für das ListView-Element auch realisieren. Dazu nutzen wir eine neue Schaltfläche namens btnSortByFirstName, die wir wie folgt definieren:

Sortierung im Windows Explorer

Bild 1: Sortierung im Windows Explorer

<Button x:Name="btnSortByFirstNameAsc" Click="btnSortByFirstNameAsc_Click">Aufsteigend nach Vorname sortieren</Button>

Und wir legen direkt noch eine Schaltfläche für die umgekehrte Sortierung an:

<Button x:Name="btnSortByFirstNameDesc" Click="btnSortByFirstNameDesc_Click">Absteigend nach Vorname sortieren</Button>

Für die Schaltflächen legen wir die folgenden beiden Ereignismethoden an:

Private Sub btnSortByFirstNameAsc_Click(sender As Object, e As RoutedEventArgs)
     Dim sortDescription As SortDescription
     sortDescription = New SortDescription("Vorname", ListSortDirection.Ascending)
     lvwAdressen.Items.SortDescriptions.Clear()
     lvwAdressen.Items.SortDescriptions.Add(sortDescription)
End Sub
Private Sub btnSortByFirstNameDesc_Click(sender As Object, e As RoutedEventArgs)
     Dim sortDescription As SortDescription
     sortDescription = New SortDescription("Vorname", ListSortDirection.Descending)
     lvwAdressen.Items.SortDescriptions.Clear()
     lvwAdressen.Items.SortDescriptions.Add(sortDescription)
End Sub

Diese legen ein neues Element des Typs SortDescription und übergeben diesem den Namen der zu sortierenden Spalte und die Sortierreihenfolge. Dann leeren sie die bisherigen Sortierungen in der Auflistung SortDescriptions einer weiteren Auflistung namens Items und fügen das neue Objekt über die Variable sortDescription zur Auflistung SortDescriptions hinzu. Als Ergebnis können Sie die Sortierreihenfolge der Spalte Vorname nun in beiden Richtungen festlegen (siehe Bild 2).

Zwei verschiedene Sortierungen

Access, SQL und Cloud Automation

Unser exklusives Angebot für Dich!

VB-Entwickler
12,50 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements.)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →