Menu

#21 FastObjectListview custom sort not working

v2.X
open
nobody
None
1
2019-06-11
2019-06-11
No

I'm using the FastObjectListview and now I need to sort on 2 columns. So I tried using the example I found on the StackOverflow website but I can't get it to work.

Please help. Thanks in advance.

Public Class Form1
Class MyCustomSortingDataSource
    Inherits FastObjectListDataSource
    Public Sub New(ByVal listView As FastObjectListView)
        MyBase.New(listView)
    End Sub
    Public Property SortColumn As OLVColumn
        Get
            Return _sortColumn
        End Get
        Set(ByVal value As OLVColumn)
            _sortColumn = value
        End Set
    End Property
    Private _sortColumn As OLVColumn
    Public Overrides Sub Sort(ByVal column As OLVColumn, ByVal sortOrder As SortOrder)
        If sortOrder <> SortOrder.None Then
            Dim objects As ArrayList = CType(Me.listView.Objects, ArrayList)
            objects.Sort(New ModelObjectComparer(SortColumn, SortOrder.Ascending, column, sortOrder))
        End If
        Me.RebuildIndexMap()
    End Sub
End Class

Class dlist
    Public a As String
    Public b As String
    Public grp As Integer
End Class

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    Dim Data As New List(Of dlist)

    Data.Add(New dlist With {.a = "First AB", .b = "Test 1", .grp = 1})
    Data.Add(New dlist With {.a = "First ABC Test 3", .b = "Test 2", .grp = 1})
    Data.Add(New dlist With {.a = "First ABC Test 1", .b = "Test 3", .grp = 1})
    Data.Add(New dlist With {.a = "First ABC Test 2", .b = "Test 1", .grp = 1})
    Data.Add(New dlist With {.a = "First ABCD", .b = "Test 3", .grp = 2})
    Data.Add(New dlist With {.a = "First AB", .b = "Test 4", .grp = 2})
    Data.Add(New dlist With {.a = "First AB", .b = "Test 4", .grp = 3})
    Data.Add(New dlist With {.a = "First List", .b = "Test 4", .grp = 3})
    Data.Add(New dlist With {.a = "First List ABC", .b = "Test 3", .grp = 3})
    Data.Add(New dlist With {.a = "First List DBC", .b = "Test 4", .grp = 2})

    Dim vSort As New MyCustomSortingDataSource(FastObjectListView1)
    vSort.SortColumn = OlvGrp
    FastObjectListView1.VirtualListDataSource = vSort

    FastObjectListView1.Objects = Data
End Sub
End Class
1 Attachments

Discussion


Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.