1

我正在尝试实现用 NatTable 实现的树排序,但我无法真正理解它是如何工作的。我的问题是,在对“树”列之外的任何列进行排序后,子节点可以移动到无效的父节点。尽管元素的顺序在所有层次结构上都是正确的。所以基本上我不明白它的目的TreeList.Format.getComparator()以及它与为列注册的比较器的关系,我不明白节点何时以及为什么可以更改其父级。

我从示例 TreeGridExample开始,并且设法创建了遇到相同问题的测试数据

private void createDatums() {       
    createDatum(null, "a", 2);        
    createDatum("a", "aa1", 0);        
    createDatum(null, "b", 0);        
    createDatum("b", "bb1", 0);
    createDatum(null, "m", 1);
    createDatum(null, "n", 0);
}

如果我对 column 进行排序bar,则bb1节点从bto跳转,n并且在删除排序时,它又是b

4

2 回答 2

0

关于我们的示例,也许我们SortableTreeComparator的工作不正常。答案并非微不足道。

首先,为了使 TreeList 正常工作,您需要将列表中的元素按正确的顺序排列。这是树比较器。

您还想要在最低级别添加自定义排序。因此,在这种情况下,您需要扩展比较器以检查树级别。

父级更改的原因是因为您的比较器更改了集合中的顺序,因此破坏了整个树结构。

我们设法使其与 中的 GroupBy 功能一起使用GroupByComparator,但我们在列表中有 GroupByObjects。我记得要让所有东西一起工作是一项艰巨的工作。

请创建一张票来修复SortableTreeComparator,不确定我何时能够处理它。

于 2016-05-09T15:32:14.353 回答
0

您的比较器需要考虑树的层次结构。

请参阅此处此处了解更多信息。

于 2016-05-09T10:40:04.793 回答