使用GWT创建分层动态网格

时间:2013-08-07 15:38:10

标签: gwt grid hierarchical-data

我正在尝试在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并添加处理程序来显示/隐藏行,但是如何管理隐藏所有后代呢?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

所以这是我的解决方案:

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

由于无法找到检索表示行的窗口小部件的方法,在我的自定义表的构造函数中,我添加了一个处理程序到 EventBus ,它改变了使用<检索的行的样式EM> getRowElement()的。 ExpandEvent 中的参数提供行索引。