Buongiorno,
ho una listview con 3 colonne e vorrei che la seconda fosse quella da cui prendere riferimento per un sorting, il mio problema non è però ordinare in base alla seconda colonna ma secondo il tipo di contenuto date ("ddMMyyyyHHmmss")
Ecco il codice che uso per oridinare ma non funziona:
Dim arrayIndex As Integer = -1
'esecuzione
ListView1.Sorting = Nothing
Dim order() As Integer = {1, 2}
arrayIndex += 1
ListView1.ListViewItemSorter = New sorter With {.columnIndex = 1, .sortOrder = DirectCast(order(arrayIndex Mod 2), SortOrder)}
ListView1.Sort()
ListView1.ListViewItemSorter = Nothing
'classe
Public Class sorter
Implements IComparer
Public columnIndex As Integer
Public sortOrder As SortOrder = SortOrder.Ascending
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements System.Collections.IComparer.Compare
Dim xDate As Date
Date.TryParseExact(DirectCast(x, ListViewItem).SubItems(Me.columnIndex).Text, "ddMMyyyyHHmmss", Nothing, Globalization.DateTimeStyles.None, xDate)
Dim yDate As Date
Date.TryParseExact(DirectCast(y, ListViewItem).SubItems(Me.columnIndex).Text, "ddMMyyyyHHmmss", Nothing, Globalization.DateTimeStyles.None, yDate)
If sortOrder = Windows.Forms.SortOrder.Ascending Then
Return xDate.CompareTo(yDate)
ElseIf sortOrder = Windows.Forms.SortOrder.Descending Then
Return yDate.CompareTo(xDate)
End If
End Function
End Class
Non funziona sono in disordine cosa posso fare? Dove sbaglio? O devo usare un altro metodo?
Grazie