0

我是 GWT 的新手,在创建子节点动态增长的树时遇到问题。当我的页面加载时,树看起来像这样:

ROOT_Node
    |
    |_Child 1
    |
    |_Child 2

当用户点击 Child 1 或 Child 2 时,它们会像这样展开:

ROOT_Node
    |
    |_Child 1
    |   |
    |   |_Child 1_1
    |   |_Child 1_2
    |
    |_Child 2

如果用户点击 Child 1_1,如果 Child 1_1 有任何子节点,它将再次展开。并且所有节点都会动态增长。我在 GWT TreeCell 上做了一些基本的示例,并了解它不会动态增长。因此,每当用户单击子节点时,我都会删除 CellTree 并添加新的 CellTree。这太糟糕了。至少我应该能够编写一些可以处理任意数量的子节点及其子节点的代码。

我已经阅读了一些 GWT 教程,包括官方 GWT 教程。但是找不到与此类问题相关的示例。教程只包含“if (value instanceof SomeClass) then do this”,添加某种选择处理程序等。如果我使用这种方法,我应该编写很多 if-then-else 块。

谁能帮我解决这个问题。或者有什么简单的方法可以在不使用 CellTree 的情况下显示树?清单对我有帮助吗?

4

1 回答 1

0

CellTree确实支持动态数据。

如果您想支持延迟加载或事先不知道层次结构,则可以使用AsyncDataProvider 。
还有一个展示使用动态数据的示例,可以在这里找到。

The use of all the if (value instanceof SomeClass) is necessary if you want to use different Cells for each tree level (see showcase example).

If Child1 and Child1_2 are of the same type and are supposed to be rendered in the same way, you can use a different approach. Instead of checking if the object is a specific class you could check a field in the object which tells you about to which level in the tree it belongs or if your objects are linked together via references (i.e. child object has a reference to it's parent) you can also make use of this information to create your TreeViewModel

于 2013-02-16T11:04:49.683 回答