如何为 NatTable 中的每一列使用不同的比较器对 TreeList 进行排序
How to sort a TreeList with a different comparator for each column in a NatTable
我正在使用 NatTable 显示具有多列的树。树被展平为用于创建 TreeList 的 SortedList。
EventList<Person> eventList = GlazedLists.eventList(perfStats.getFlattenedTree());
TransformedList<Person, Person> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<Person> sortedList = new SortedList<(rowObjectsGlazedList, null);
TreeList treeList = new TreeList(sortedList, treeFormat, TreeList.nodesStartCollapsed());
这适用于显示树。但是,现在我的问题是如何正确排序?
期望的结果是对根进行正确排序,然后对内部的子项进行独立正确排序,依此类推。
现在,我正在使用 GlazedListsSortModel,它对展平的树进行排序,然后根据不起作用的树构建显示。
如有任何帮助或为我指明正确的方向,我们将不胜感激!
当使用 TreeList
时,您通过 TreeList#Format
为树结构传递 Comparator
。这是确保正确创建树所必需的,因为它是从 List
派生的。因此,即使通过 SortedList
应用排序,TreeList#Format
的 Comparator
也会最终获胜。
因此,为了解决您的要求,您需要实施一个考虑列排序的 TreeList#Format
。例如,这可以通过使用 NatTable SortableTreeComparator
来完成。您可以查看我们的 TreeGridExample 以了解它的外观。
可以在 GroupByComparator 中看到更扩展的版本,用于支持使用 GroupBy 功能按列排序。
我正在使用 NatTable 显示具有多列的树。树被展平为用于创建 TreeList 的 SortedList。
EventList<Person> eventList = GlazedLists.eventList(perfStats.getFlattenedTree());
TransformedList<Person, Person> rowObjectsGlazedList = GlazedLists.threadSafeList(eventList);
SortedList<Person> sortedList = new SortedList<(rowObjectsGlazedList, null);
TreeList treeList = new TreeList(sortedList, treeFormat, TreeList.nodesStartCollapsed());
这适用于显示树。但是,现在我的问题是如何正确排序?
期望的结果是对根进行正确排序,然后对内部的子项进行独立正确排序,依此类推。
现在,我正在使用 GlazedListsSortModel,它对展平的树进行排序,然后根据不起作用的树构建显示。
如有任何帮助或为我指明正确的方向,我们将不胜感激!
当使用 TreeList
时,您通过 TreeList#Format
为树结构传递 Comparator
。这是确保正确创建树所必需的,因为它是从 List
派生的。因此,即使通过 SortedList
应用排序,TreeList#Format
的 Comparator
也会最终获胜。
因此,为了解决您的要求,您需要实施一个考虑列排序的 TreeList#Format
。例如,这可以通过使用 NatTable SortableTreeComparator
来完成。您可以查看我们的 TreeGridExample 以了解它的外观。
可以在 GroupByComparator 中看到更扩展的版本,用于支持使用 GroupBy 功能按列排序。