【发布时间】:2026-01-30 12:20:03
【问题描述】:
我正在尝试将我的对象列表分组到 ObjectListView。
ObjectListView 应根据第一列对对象进行分组,然后根据自定义排序对同一列进行排序。
我该怎么做?我已经阅读了ObjectListView 的文档:
http://objectlistview.sourceforge.net/cs/gettingStarted.html#gettingstarted
到目前为止,我已经实现了自定义排序,但我不确定如何触发分组?请记住,我试图在第一列上进行分组,然后应用自定义排序。
我的自定义排序依赖于 BeforeSorting 事件:
// after initializing components
olv.BeforeSorting += olv_BeforeSorting;
那么……
private void olv_BeforeSorting(object sender,BrightIdeasSoftware.BeforeSortingEventArgs e)
{
olvDataSource.Sort((x, y) => x.Group.ID.CompareTo(y.Group.ID));
e.Handled = true;
}
ObjectListView 显示我的有序对象列表,但它没有组合在一起。每个对象都显示在自己的行上,没有组标题。
排序后如何对对象进行分组?
【问题讨论】:
-
“组”由什么组成?它似乎是按 ID 排序的,为了进一步分类到“组”(无论它们可能是什么),您可以在按 ID 排序时在那里进行。
-
啊,好吧。因此,与其排序,我如何对它们进行分组,然后使用自定义排序对组进行排序?
-
目前还不清楚是什么问题。我建议创建一个Minimal, Reproducible Example WITH DATA。我还建议仔细查看
ObjectListView文档,当单击列标题时,您描述的排序似乎是自动完成的。 -
因此,您的代码(连接
BeforeSort事件并按 ID 排序)似乎是不必要的。单击 ID 列标题时,ObjectListView应该会自动执行此操作。ShowGroups似乎只是按单击的列标题的第一个字符“分组”数据。在不知道您要达到的目标的情况下,可能很难获得答案。 -
@JohnG 感谢您的跟进。我可以看到我的问题不是很具有描述性。我将添加更多细节并尝试澄清它。
标签: c# winforms sorting grouping objectlistview