java - GWT CellTable 中的多列排序

标签 java gwt

我正在使用 GWT 2.5.1。我有一个 CellTable,我希望能够按多个列进行排序。基本上,我希望能够进行组合排序。例如,我有 4 列。 ColA、ColB、ColC、ColD。当我点击 ColA 时,它应该按该列排序。现在,在按下 shift 键的情况下,如果我单击 ColB,ColA 应该保持为主列,而 ColB 应该成为次要列。再一次,如果我在按下 shift 键的情况下单击说 Col D,则排序应该首先按 ColA,然后是 ColB,然后是 ColD。我为每一列都写了比较器。所以基本上,单列排序没有任何问题。

我试过

myTable.getColumnSortList().push(ColD);
myTable.getColumnSortList().push(ColB);
myTable.getColumnSortList().push(ColA);
ColumnSortEvent.fire( usersTable, usersTable.getColumnSortList());

但这只能按 ColA 排序。

有没有人试过做类似的事情?任何指针将不胜感激。

编辑:

让我简化一下我的要求。可以说我有一个按钮。单击按钮时,我想先按 ColA 对列表进行排序,然后按 ColB,然后按 ColD。 ColB 和 ColD 成为辅助排序列。据我所知,myTable.getColumnSortList() 只维护标题状态,即表的排序信息,所有列(一次只有一个,而不是同时)以及升序或降序的顺序。即使我们执行 ColumnSortEvent.fire( usersTable, usersTable.getColumnSortList());它只会按照列表中最新添加的列(单列排序)对表格进行排序,排序顺序由该列的 ColumnSortInfo 对象确定。

我的想法是实现多列排序,如下例所示:http://www.datatables.net/examples/basic_init/multi_col_sort.html

最佳答案

我遇到了同样的问题。虽然我对我的解决方案不满意,但我想我会分享它,以防万一有人遇到同样的问题。在我看来,火灾事件只需要推送最后一列。通过在每次推送后调用它,您将获得所需的结果。蹩脚的,我知道,但总比没有好。


myTable.getColumnSortList().push(ColD);
ColumnSortEvent.fire( usersTable, usersTable.getColumnSortList());
myTable.getColumnSortList().push(ColB);
ColumnSortEvent.fire( usersTable, usersTable.getColumnSortList());
myTable.getColumnSortList().push(ColA);
ColumnSortEvent.fire( usersTable, usersTable.getColumnSortList());

关于java - GWT CellTable 中的多列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21887168/

相关文章:

java - MapReduce 计算制表符分隔输入值的总和

java - 如何检查一个对象是否是java中arraylist中的枚举类型?

java - 无法加载: InvalidPluginException

mysql - mysql 字符集和 GWT 的问题

java - org.hibernate.cfg.Environment - 找不到 hibernate.properties

java - 如何在okhttp中使用共享缓存

java - 在Linux上运行的Java代码中,如何指向共享的Windows文件夹?

java - 这个伞异常的原因是什么

javascript - 在 gwt 对话框中附加 javascript 内容

apache - GWT 和 SSL 不工作?