2011-04-24 83 views
1

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

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

什么是更好的方式来实现这种效果,而不必在单元状态改变时重新渲染整个表?

回答

0

这里令人失望的答案是,你不能两全其美 - 静态,全部一次呈现,动态更改一个元素更新。在CellTable等人提供的方法中,改变单个单元格样式的唯一方法是重新整理整个表格。

在我自己的代码中,我通过设置呈现给每个表格单元格的div的DOM ID来一次性更新单个单元格。然后我可以使用getElementById并从那里继续。我仍然避免了完整小部件的开销。这有点笨重,但隐藏在一个不错的界面后面,这不算太糟糕。

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

+0

这对初始渲染很有用 - 谢谢! – 2011-11-29 13:44:02

相关问题