DgvSort case sensitive

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Dideldum.

    DgvSort case sensitive

    Hi,

    Ich habe eine DGV, die ich nach drei Spalten sortieren möchte. So habe ich das kodiert:

    VB.NET-Quellcode

    1. 'RecipientList: Order by Recipient, User, FromDate ASC
    2. RecipientListSorted.Sort(Function(x As RecipientRecord, y As RecipientRecord)
    3. If x.Recipient <> y.Recipient Then
    4. 'Return If(x.Recipient > y.Recipient, 1, -1)
    5. Return x.Recipient.CompareTo(y.Recipient)
    6. Else
    7. If x.User <> y.User Then
    8. Return If(x.User > y.User, 1, -1)
    9. Else
    10. Return x.FromDate.CompareTo(y.FromDate)
    11. End If
    12. End If
    13. End Function)


    Das funktioniert auch ganz prima - mit Ausnahme der Beachtung von Groß- und Kleinschreibung !

    Wie man sieht, hab ich schon ein bissl experimentiert. Die jetzige Lösung sortiert

    THYMIAN - toom - TRANSACT


    d.h. Groß- und Kleinschreibung wird ignoriert.

    Die auskommentierte Lösung hat sortiert

    THYMIAN - TRANSACT - UNIVERS - toom

    d.h. Keinbuchstaben kommen nach allen Großbuchstaben.

    Ich benötige eine Sortierung mit folgender Reihenfolge:


    a - b - c .... A - B - C ...

    Zahlen können beliebig behandelt werden (ganz am Anfang oder ganz am Ende 0 - 1 - 2 - ...)


    Ich bin mir fast sicher, dass das schon einmal gelöst wurde ... also seid bitte nachsichtig .... :)

    LG
    Peter

    Neu

    Wäre hier nicht StringComparision.Ordinal (ASCII-Wert-Sortierung) das Richtige?
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Dgv_Einstellungen_Erinnerungen_SortCompare(sender As Object, e As DataGridViewSortCompareEventArgs) Handles Dgv_Einstellungen_Erinnerungen.SortCompare
    2. Dim val1 As String = e.CellValue1.ToString()
    3. Dim val2 As String = e.CellValue2.ToString()
    4. e.SortResult = String.Compare(val1, val2, StringComparison.Ordinal)
    5. If e.SortResult = 0 Then
    6. e.SortResult = e.RowIndex1.CompareTo(e.RowIndex2)
    7. End If
    8. e.Handled = True
    9. End Sub