目前我正在开发一个项目(JSF 2.0,RichFaces 3.3.3),在该项目中,我必须获得一个启用多列排序的2列DataTable(我已经通过sortMode="Multi"
属性做到了这一点),但与单列排序不同,在多列的情况下,我不可能释放正在执行排序的列(在单列的情况下通过单击其他列标题来完成)。
排序顺序在会话期间被锁定:即使在选项卡之间切换,我的web应用程序也会保持当前的列排序设置。我需要在会话中恢复此配置,以允许用户选择其他排序顺序,因为目前重置它的唯一方法是注销并重新输入。
示例:当用户按列a和列B进行排序时(反之亦然),并且考虑到我也在使用sortPriority
属性(这是我无法更改的要求),当当前会话打开时,a-B或B排序)时,在进行多列排序后,不可能在同一会话中获得此结果。
有什么方法可以实现我需要的"组合列排序发布"吗?
提前谢谢。
更新:
我发现,在数据表中只有两个数据列的情况下,唯一的方法是在"Multi"
和"Single"
值之间切换sortMode
属性。通过这种方式,我可以保证在单列排序模式下,它将释放列的组合。
有人成功地应对了不得不在运行时使用javascript为rich:dataTable
组件属性赋值?
查看rich:dataTable
和rich:column
的sortBy
和sortOrder
属性。通过在rich:column
上设置sortOrder="UNSORTED"
,应该可以清除该列的排序。您还可以在rich:dataTable
本身上设置sortOrder="UNSORTED"
和/或sortBy=""
,以获得更简单的解决方案(尽管我还没有尝试过)。您可以在JavaScriptonLoad
函数中或在将属性绑定到其属性的bean中执行此操作。
这应该比必须玩sortMode
更优雅一点:)