1

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

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

每当单元格的状态发生变化时,有什么更好的方法可以在不重新渲染整个表格的情况下实现这种效果?

4

2 回答 2

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 中解决您的问题。

于 2011-11-29T13:40:59.127 回答
0

令人失望的答案是,您不能两全其美 - 静态、一次性渲染和动态、更改一个元素更新。在 et al提供的方法中,更改单个单元格样式的唯一方法CellTable是重新渲染整个表格。

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

于 2011-11-29T13:47:36.217 回答