需要帮助在ObjectListView上创建自定义排序器

时间:2014-08-15 03:28:53

标签: vb.net sorting objectlistview

好的,我完全不知所措.... 我想我已经查看了每个示例和每个代码片段,但仍无法解决如何在我的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

我没有错误,但我也没有改变。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

嗯,你确定你已经查看了每个示例吗?我认为这方面有很多资源。

当您使用list,datagridview或任何主窗体时,可以调整它以使用自定义排序器。您可以创建自定义IComparer,即您对某些内容进行排序的定义。它可以像将字符串(像你的)转换为带有CInt()的int一样简单,如果它大于或小于最后一个值,则返回-1或+1。这很常见。

如果您需要有关如何操作的基础知识的帮助,当然总有微软链接可以为您提供诸如Custom Sort I Comparer之类的基础知识。但是有一个堆栈流也跟着你的问题:Custom sort C# 这是在C#中,但这里有很多转换器。

最简单的方式绕过它?将字符串列表转换为整数列表。然后它将完美排序。