我正在尝试在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并添加处理程序来显示/隐藏行,但是如何管理隐藏所有后代呢?
答案 0 :(得分:0)
基本上,在MVC工作。您的控制器捕获事件,更新模型,然后要求数据提供者刷新显示。
我能想到的最简单的事情就是当你捕捉到一个事件要求隐藏例如Product 2.1的后代时,循环遍历你的Model对象(我猜一个列表)并相应地更新子元素。然后使用dataProvider上的相应方法刷新cellTable。
答案 1 :(得分:0)
所以这是我的解决方案:
由于无法向单行添加侦听器(ClickHandler除外),也无法构建自定义行(我使用的是GWT 2.4),因此我必须创建一个自定义列。 然后我创建了 NodeCell ,这是 ButtonCell 的一个简单变体,它在文本之前显示了一个+/-按钮。 如果列是“节点”,则它将使用 NodeCell 。 单击该按钮可在 EventBus 上触发 ExpandEvent 。
由于无法找到检索表示行的窗口小部件的方法,在我的自定义表的构造函数中,我添加了一个处理程序到 EventBus ,它改变了使用<检索的行的样式EM> getRowElement()的。 ExpandEvent 中的参数提供行索引。