2011-04-24 46 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

相關問題