将css类名添加到gwt CellTable中的Cells的内容中

时间:2011-04-24 22:28:18

标签: gwt gwt-2.2-celltable

我想将样式类添加到单元格(或td本身)中的元素,这些元素将根据单元格中数据的状态而改变。例如,单元格可能有颜色:数据未保存时为红色,保存数据时颜色为:蓝色;保存成功完成后颜色为:黑色。 Cell外部的代码需要访问权限才能更改类名,一旦触发回调等等。

我已经通过我的Cell中的hack获得了类似的东西,它从onBrowserEvent获取Element并在那里添加属性。我可以在render中设置初始样式,然后在onBrowserEvent中根据需要更改它,甚至可以跟踪该元素,以便外部代码可以使用它。这是不完整的,因为在调用onBrowserEvent之前我无法获取元素,并且因为我必须在两个不同的地方设置样式而烦人的hacky。

只要单元格的状态发生变化,在不重新渲染整个表的情况下,实现此效果的更好方法是什么?

2 个答案:

答案 0 :(得分:1)

我找到了像

这样的东西
table.setRowStyles(new RowStyles() {
@Override
public String getStyleNames(Contact row, int rowIndex) {
    if (row.name.startsWith("J")) {
        return "bold";
    } 

    return null;
}
});

应该可以在GWT 2.4中解决您的问题。

答案 1 :(得分:0)

这里令人失望的答案是,你无法兼顾两个方面的优势 - 静态,一次性渲染,动态,变更 - 元素更新。在CellTable等人提供的方法中,改变单个单元格样式的唯一方法是重新整理整个表格。

在我自己的代码中,我通过设置呈现给每个表格单元格的div的DOM id,将我一次更新单个单元格所做的黑客形式化。然后我可以使用getElementById并从那里继续。我仍然避免了完整小部件的开销。它有点笨重,但隐藏在一个漂亮的界面背后,它并不太糟糕。