好的,我完全不知所措.... 我想我已经查看了每个示例和每个代码片段,但仍无法解决如何在我的ObjectListView上实现自定义排序器。
我的主要列(第0列)仅包含数字(作为字符串),但是按字母数字而不是数字对所有项目进行排序,这意味着它正在执行以下操作:
1
11
111
2
22
etc.
我试图找到一个相对简单的示例,说明如何在第一次加载时修改我的ObjectListView以对第0列进行排序,但我正在努力。
我已将名为ColumnSorter的自定义类(从CodeProject)转换为VB,我正在调用以下代理:
lvwColumnSorter = New CustomLVSorter.CustomLVSorter()
lsv_OpenTickets.CustomSorter = Sub(column As OLVColumn, order As SortOrder)
lvwColumnSorter.ColumnToSort = Ticket_Status.Index
lvwColumnSorter._SortModifier = CustomLVSorter.CustomLVSorter.SortModifiers.SortByText
lvwColumnSorter.OrderOfSort = SortOrder.Ascending
lsv_OpenTickets.ListViewItemSorter = lvwColumnSorter
End Sub
我没有错误,但我也没有改变。
非常感谢任何帮助。
答案 0 :(得分:0)
嗯,你确定你已经查看了每个示例吗?我认为这方面有很多资源。
当您使用list,datagridview或任何主窗体时,可以调整它以使用自定义排序器。您可以创建自定义IComparer,即您对某些内容进行排序的定义。它可以像将字符串(像你的)转换为带有CInt()的int一样简单,如果它大于或小于最后一个值,则返回-1或+1。这很常见。
如果您需要有关如何操作的基础知识的帮助,当然总有微软链接可以为您提供诸如Custom Sort I Comparer之类的基础知识。但是有一个堆栈流也跟着你的问题:Custom sort C# 这是在C#中,但这里有很多转换器。
但最简单的方式绕过它?将字符串列表转换为整数列表。然后它将完美排序。