listview: festgelegte Sortorder + manuell

DrMueller

Erfahrenes Mitglied
Hi Leute,
in einem Listview wird eine Sortorder mit dem entsprechenden Key mitgegeben.
Nun sollte es möglich sein, dass der Benutzer einen Header anklicken kann und bei dieser Aktion der vorher festgelegte Sortkey ignoriert wird und nach dem entsprechenden Header sortiert wird.

Soweit ich informiert bin, meine ich zu wissen, dass das Control dies selber verwalten sollte, aber bei mir bleibt es stur.
Muss ich denn dies selber ausprogrammieren oder geht das über die Properties?

Danke im VOraus.
 

DrMueller

Erfahrenes Mitglied
hm der Artikel geht ja nur auf die Ausnahme von alphanumerischen Werten ein.
Dies ist zwar in einer Column auch der Fall, aber das Problem ist allgemein:
Klick auf einen Header soll nach diesem ordnen, obwohl der Sortkey bereits vorgegben ist.
Könnte vielleicht auch irgendwie den Sortkey löschen, wenn der Header geklickt wird?
 

DrMueller

Erfahrenes Mitglied
hehe habe mir grad die Lösung selbst gegeben.
Manchmal hilft es einfach den Fehler niederzuschreiben.

Danke trotzdem Tom, der Artikel ist auch sonst sehr interessant.
 

Yaslaw

alter Rempler
Moderator
dazu gibts doch ein Event ListView1_ColumnClick(). Darin kannst du die Sortierung umstellen

Hier ein Beispiel für Strings
Visual Basic:
'Sortierung ändern
'zuerst aufsteigend, bei erneutem klicken auf dieselbe Spalte wechselt von aufsteigend auf absteigend
'und beim nächsten klick wieder zurück
Private Sub ListView1_ColumnClick(ByVal ColumnHeader As Object)
    Dim newSortKey As Integer
    newSortKey = ColumnHeader.index - 1
    
    With ListView1
        If newSortKey = .SortKey Then
            .sortOrder = Abs(.sortOrder - 1)
        Else
            .SortKey = ColumnHeader.index - 1
            .sortOrder = lvwAscending
        End If
    End With
End Sub
 

DrMueller

Erfahrenes Mitglied
hi Yaslaw, danke.
Tatsächlich hab ichs genau so gemacht.
Dachte gäbe da eine Automatisierung, aber passt ja so.

Sorry, dachte hätte den Thread zugemacht.