我很难找到有关我最近将ObjectListView集成到我的应用程序中的许多小问题的信息。我必须承认,我喜欢这种控制,通过控制几乎可以完成我需要的一切,我需要做很多工作。
然而,在我到目前为止遇到的一些问题中,有一个问题是,如果我关闭单个列的分组,它就不再允许我对这些列进行排序。
例如,我的ListView控件有一个ID,摘要,位置等等。我目前在ID上运行分组,因为我为每个ID附加一个独特的页脚,看起来不错。但是,当我点击“摘要”或“位置”时,它会按摘要或位置对所有项目进行分组,因此我最终得到了组标题但不再有页脚,因为页脚不再与ID对应。
我想要实现的是允许用户单击任何其他列,但仍然按ID维护组,从而保持页脚对每个项目。我只想要对项目进行排序,而不是组,但如上所述,当我关闭每列的分组时,它会关闭排序功能。
更新
基本上,查看下面的屏幕截图,我希望能够点击优先级列标题(例如)按优先级对对象列表进行排序,但仍然保持Group By Ticket(具有Group Footer详细信息) 。并且基本上可以单击任何列标题来对列表进行排序,但保持按票证分组。
我拦截了OLV_BeforeCreatingGroups事件以添加:
e.Parameters.GroupByColumn = Ticket_ID
现在看来,无论我点击什么列标题,我都会通过Ticket维护我的分组,但现在我放弃了排序功能。
答案 0 :(得分:0)
尝试将AlwaysGroupByColumn
设置为TicketId列。这样就可以了:)
第二次尝试:
感谢截图。我想我明白你想要什么。您希望单击标题将对组本身进行排序。这不是默认行为,即对每个组中的行进行排序。
做你要问的事:
侦听BeforeCreatingGroups
事件并在事件参数块上填写GroupComparer
属性。该比较器控制组的顺序。
默认组顺序基于OLVGroup.SortValue
。因此,您可以安装GroupFormatter
代理并更改每个组的SortValue
,以便按照您希望的方式对其进行排序。
在任何一种情况下,您都需要使用PrimarySort
和PrimarySortOrder
来了解用户最后点击的列。