在gwt CellTable中为单元格的内容添加css类名



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

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

当一个单元格的状态改变时,有什么更好的方法来实现这种效果,而不需要重新渲染整个表?

我发现了一些像

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

应该在GWT 2.4中工作来解决您的问题

这里令人失望的答案是,您不可能同时拥有两者的优点——静态的、一次性呈现的和动态的、更改一个元素的更新。在CellTable等提供的方法中,更改单个单元格样式的唯一方法是重新呈现整个表。

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

相关内容

  • 没有找到相关文章

最新更新