Comment trier Listview colonnes lorsque l'en-tête est cliqué
Je suis en train d'écrire un devoirs planner et j'ai un élément ListView.
Je suis à la recherche d'un fragment de code qui me permet de réorganiser les colonnes dans l'ordre alphabétique, quand je clique sur l'entête de la colonne. Si c'est déjà trié dans l'ordre croissant, puis de passer à la descente et vice-versa, puis tri par défaut/d'abord, c'est à dire "statut" dans la capture d'écran ci-dessous.
J'ai cherché et n'ai rien trouvé que je pouvais utiliser, pouvez-vous m'aider?
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
- vous pourriez vous voulez les convertir en
- Bitte schreiben Sie en Anglais! 🙂
- désolé introduction de la gestion et je dois le traduire avec googletranslator
- Laissez-moi deviner. Vous souhaitez trier une colonne liste en fonction de son contenu (dates, nombres, chaînes de caractères)?
- non, ce sont toutes les chaînes une fois l'heure = stunde sont un nombre entier de date est une chaîne parce que j'ai écrit la date dans mysql
- oui je voudrais trier tous pour lui-même sur l'alphabet et je sais que je dois normalement trier la date et le numéro de soi, mais ils sont tous les codes ascii afin que je puisse les trier par l'alphabet ou pas?? et j'ai besoin d'un codesnip pour ces fonction
- merci pour modifier mon anglais est très mauvais, merci 🙂
InformationsquelleAutor Florian Hofmeister | 2014-08-19
Vous devez vous connecter pour publier un commentaire.
Si je comprends votre problème, vous voulez trier une colonne de Dates (et peut-être certaines valeurs???) dans un
ListView
. Le problème, c'est que tout dans unListView
est une chaîne/texte. Certains points (cols) peut look comme les dates, mais c'est juste parce que c'est la façon dont votre cerveau traduit/interprète - ils sont en fait des chaînes de caractères.L'impact de ceci est que le tri de texte qui a des nombres fonctionne rarement. Par exemple,
"90"
sera toujours plus élevé que"300"
parce que"9"
>"3"
, et"19.08.2014"
va trier plus élevé que"10.01.2019"
. La valeur de chiffres et numéros de n'est pas la même.De trier par autre chose qu'un texte, vous avez besoin d'un
ListViewItemSorter
. Celui-ci est pour les dates:Pour l'utiliser:
COL_TO_SORT
serait la colonne/sous-élément index vous souhaitez faire le tri de ce qui contient des Dates.Sort_Order
serait la norme WinForms l'ordre de tri (SortOrder.Ascending
etc)À comparer d'autres types de données,
Decimal
par exemple, clone de laComparer
et de changer les 3 lignes de faire la comparaison: