Hallo zusammen.
Ich stehe vor dem Problem, dass ich meine Strings mit Zahlen nicht sauber sortiert bekomme.
z.B. habe ich folgende Strings (korrekt sortiert)
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
Die Sortierung in meinem Programm sieht wie folgt aus:
F1
F10
F11
F2
F3
usw..
Durch Recherche hab ich rausgefunden, dass man wohl Arrays mit einer Sort-Methode versehen kann - bei mir wird das aber wohl nicht klappen.
Ich will zur Laufzeit die Daten im DataGridView anzeigen (angebundene BindingSource) und die Daten sollen dort korrekt sortiert angezeigt werden.
So ähnlich löse ich das Bereits mit meinem TreeView, der arbeitet aber mit Katalognummern (z.B. 1.1.1 / 1.3.4 usw.) - das löse ich mit folgender Methode:
Die Function wird im RowChanged-Event der TreeDataTable aufgerufen und funzt einwandfrei.
So hätte ich das gerne auch für die o.g. Strings - im RowChanged-Event, reingeschrieben in eine SortKey-Spalte - die kann ich dann als Sort-Spalte bei der Bindingsource nutzen.
Weiß jemand, wie ich das angehen kann?
Ich stehe vor dem Problem, dass ich meine Strings mit Zahlen nicht sauber sortiert bekomme.
z.B. habe ich folgende Strings (korrekt sortiert)
F1
F2
F3
F4
F5
F6
F7
F8
F9
F10
F11
Die Sortierung in meinem Programm sieht wie folgt aus:
F1
F10
F11
F2
F3
usw..
Durch Recherche hab ich rausgefunden, dass man wohl Arrays mit einer Sort-Methode versehen kann - bei mir wird das aber wohl nicht klappen.
Ich will zur Laufzeit die Daten im DataGridView anzeigen (angebundene BindingSource) und die Daten sollen dort korrekt sortiert angezeigt werden.
So ähnlich löse ich das Bereits mit meinem TreeView, der arbeitet aber mit Katalognummern (z.B. 1.1.1 / 1.3.4 usw.) - das löse ich mit folgender Methode:
VB.NET-Quellcode
- Public Function GetTreeViewSortKey(tocEntry As String) As String
- Dim spaceIndex = tocEntry.IndexOf(" "c)
- Select Case spaceIndex
- Case 0 : Throw New ArgumentException("mustn't start with ' '", NameOf(tocEntry))
- Case > 0 : tocEntry = tocEntry.Substring(0, spaceIndex)
- End Select
- Dim numbs = tocEntry.Split("."c).Select(AddressOf Integer.Parse).ToArray
- If numbs.Any(Function(n) n > Byte.MaxValue) Then Throw New ArgumentException("segments maximum is '255'", NameOf(tocEntry))
- Return String.Concat(numbs.Select(Function(n) $"{n,2:X}")) ' 2-stellig rechtsbündige Hex-Darstellung
- End Function
Die Function wird im RowChanged-Event der TreeDataTable aufgerufen und funzt einwandfrei.
So hätte ich das gerne auch für die o.g. Strings - im RowChanged-Event, reingeschrieben in eine SortKey-Spalte - die kann ich dann als Sort-Spalte bei der Bindingsource nutzen.
Weiß jemand, wie ich das angehen kann?
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"