0

我正在尝试在 GWT 中创建一个表示分层数据的网格。不同级别的列将是相同的,表示产品是否可用于某个类别。

像这样的东西:

                      A | B | C | D
+ Product 1.1         X       X   X
  + Product 1.2       X       X   X
    + Product 1.3     X           X
+ Product 2.1             X
  + Product 2.2           X
...

我虽然可以使用 CellTable 并添加处理程序来显示/隐藏行,但是我应该如何管理隐藏所有后代?

4

2 回答 2

0

基本上,在 MVC 中工作。您的控制器捕获事件,更新模型,然后要求数据提供者刷新显示。

我能想到的最简单的方法是,当您捕捉到一个事件要求隐藏例如 Product 2.1 的后代时,循环浏览您的 Model 对象(我猜是一个列表)并相应地更新子元素。然后使用 dataProvider 上的适当方法刷新 cellTable。

于 2013-08-08T08:08:06.197 回答
0

所以这是我的解决方案:

由于无法向单行添加侦听器(ClickHandler 除外),也无法构建自定义行(我使用的是 GWT 2.4),因此我必须创建一个自定义列。然后我创建了NodeCell ,这是ButtonCell的一个简单变体,在文本显示一个 +/- 按钮。如果列是“节点”,它将使用NodeCell。单击按钮会在EventBus上触发ExpandEvent

由于无法找到一种方法来检索代表该行的小部件,因此在我的自定义表的构造函数中,我向EventBus添加了一个处理程序,该处理程序更改了使用getRowElement()检索到的行的样式。ExpandEvent中的一个参数提供行索引。

于 2013-08-08T12:03:41.983 回答