我想将样式类添加到单元格(或td本身)中的元素,这些元素将根据单元格中数据的状态而改变。例如,单元格可能有颜色:数据未保存时为红色,保存数据时颜色为:蓝色;保存成功完成后颜色为:黑色。 Cell
外部的代码需要访问权限才能更改类名,一旦触发回调等等。
我已经通过我的Cell
中的hack获得了类似的东西,它从onBrowserEvent获取Element
并在那里添加属性。我可以在render
中设置初始样式,然后在onBrowserEvent
中根据需要更改它,甚至可以跟踪该元素,以便外部代码可以使用它。这是不完整的,因为在调用onBrowserEvent之前我无法获取元素,并且因为我必须在两个不同的地方设置样式而烦人的hacky。
只要单元格的状态发生变化,在不重新渲染整个表的情况下,实现此效果的更好方法是什么?
答案 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
并从那里继续。我仍然避免了完整小部件的开销。它有点笨重,但隐藏在一个漂亮的界面背后,它并不太糟糕。