Archief - ListView sorteren, niet alfabetisch, op DATUM

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

JasonC

Legacy Member
Heb heb een listview die ik als volgt sorteer:

Code:
    Class ListViewItemComparer
        Implements IComparer
        Private col As Integer
        Private order As SortOrder

        Public Sub New()
            col = 0
            order = SortOrder.Ascending
        End Sub

        Public Sub New(ByVal column As Integer, ByVal order As SortOrder)
            col = column
            Me.order = order
        End Sub

        Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer _
         Implements System.Collections.IComparer.Compare

            Dim returnVal As Integer = -1
            returnVal = [String].Compare(CType(x,  _
                            ListViewItem).SubItems(col).Text, _
                            CType(y, ListViewItem).SubItems(col).Text)
            If order = SortOrder.Descending Then
                returnVal *= -1
            End If

            Return returnVal
        End Function
    End Class

    Private sortColumn As Integer = -1
    Private Sub listView1_ColumnClick(ByVal sender As Object, ByVal e As  _
                System.Windows.Forms.ColumnClickEventArgs) Handles lsvTaken.ColumnClick
        If e.Column <> sortColumn Then
            sortColumn = e.Column
            lsvTaken.Sorting = SortOrder.Ascending
        Else
            If lsvTaken.Sorting = SortOrder.Ascending Then
                lsvTaken.Sorting = SortOrder.Descending
            Else
                lsvTaken.Sorting = SortOrder.Ascending
            End If
        End If
        lsvTaken.Sort()
        lsvTaken.ListViewItemSorter = New ListViewItemComparer(e.Column, lsvTaken.Sorting)

    End Sub
Nu heb ik ergens een kolom waar data in staan, en ik wil die ook kunnen sorteren, maar als ik op die kolom druk komt dinsdag eerst eerst dan donderdag,...
mijn data komen van een datetimpicker een staan er dus zo op: zondag 25 april 2010
Iemand die me hiermee kan helpen?

Moto

Legacy Member
Probleem zit hier denk ik
returnVal = [String].Compare(CType(x, _
ListViewItem).SubItems(col).Text, _
CType(y, ListViewItem).SubItems(col).Text)

Cast alles naar strings, getallen zullen dan ook wel fout orderen

Moto

Legacy Member
Man, wat een berg code om een dom lijstje te sorteren, kan dat niet met Linq to Objs?

th43ns

Legacy Member
Moto zei:
Man, wat een berg code om een dom lijstje te sorteren, kan dat niet met Linq to Objs?
Dat kan zeker met Linq to objects.

Bv: myList = new List<Person>();
var result = mylist.OrderBy(t => t.Name);

Ik ben nu wel C# syntax gewoon maar je snapt het plaatje
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan