我是GWT的新手,我在创建一个其子节点动态增长的Tree时遇到了问题。当我的页面加载时,树看起来像这样:
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)然后执行此操作”,添加某种选择处理程序等。如果我使用这种方法,我应该编写许多if-then-else块。
任何人都可以帮我解决这个问题。或者有没有简单的方法来显示树而不使用CellTree?名单会帮助我吗?
答案 0 :(得分:0)
CellTree DOES 支持动态数据。
如果您想支持延迟加载,或者事先不知道层次结构,则可以使用AsyncDataProvider。
此外,还有一个展示示例,展示了可以找到here的动态数据的使用。
如果要为每个树级别使用不同的if (value instanceof SomeClass)
,则必须使用所有Cells
(请参阅showcase示例)。
如果Child1
和Child1_2
属于同一类型并且应该以相同的方式呈现,则可以使用不同的方法。
您可以检查对象中的字段,告诉您它所属的树中的哪个级别,或者您的对象是否通过引用链接在一起,而不是检查对象是否是特定的类(即子对象具有对它的引用&#39 ;父母)您也可以利用这些信息来创建TreeViewModel