关闭Ob​​jectListView中的分组结束排序

时间:2014-08-14 12:03:06

标签: vb.net sorting objectlistview

我很难找到有关我最近将ObjectListView集成到我的应用程序中的许多小问题的信息。我必须承认,我喜欢这种控制,通过控制几乎可以完成我需要的一切,我需要做很多工作。

然而,在我到目前为止遇到的一些问题中,有一个问题是,如果我关闭单个列的分组,它就不再允许我对这些列进行排序。

例如,我的ListView控件有一个ID,摘要,位置等等。我目前在ID上运行分组,因为我为每个ID附加一个独特的页脚,看起来不错。但是,当我点击“摘要”或“位置”时,它会按摘要或位置对所有项目进行分组,因此我最终得到了组标题但不再有页脚,因为页脚不再与ID对应。

我想要实现的是允许用户单击任何其他列,但仍然按ID维护组,从而保持页脚对每个项目。我只想要对项目进行排序,而不是组,但如上所述,当我关闭每列的分组时,它会关闭排序功能。

更新

基本上,查看下面的屏幕截图,我希望能够点击优先级列标题(例如)按优先级对对象列表进行排序,但仍然保持Group By Ticket(具有Group Footer详细信息) 。并且基本上可以单击任何列标题来对列表进行排序,但保持按票证分组。

enter image description here

我拦截了OLV_BeforeCreatingGroups事件以添加:

e.Parameters.GroupByColumn = Ticket_ID

现在看来,无论我点击什么列标题,我都会通过Ticket维护我的分组,但现在我放弃了排序功能。

1 个答案:

答案 0 :(得分:0)

尝试将AlwaysGroupByColumn设置为TicketId列。这样就可以了:)

第二次尝试:

感谢截图。我想我明白你想要什么。您希望单击标题将对组本身进行排序。这不是默认行为,即对每个组中的行进行排序。

做你要问的事:

  1. 侦听BeforeCreatingGroups事件并在事件参数块上填写GroupComparer属性。该比较器控制组的顺序。

  2. 默认组顺序基于OLVGroup.SortValue。因此,您可以安装GroupFormatter代理并更改每个组的SortValue,以便按照您希望的方式对其进行排序。

  3. 在任何一种情况下,您都需要使用PrimarySortPrimarySortOrder来了解用户最后点击的列。