2011-04-24 18 views
1

セル内のデータの状態に応じて変化するセル(またはTD自体)の要素にスタイルクラスを追加したいとします。たとえば、セルの色は、データが保存されていないときは赤、データが保存されているときは青、保存が正常に完了すると黒で表示されます。コールバックが発射された後Cellへの外部コードは、私がonBrowserEventからElementを取得し、そこに属性を追加私のCellでハックして、このような何かを達成したgwt CellTableのセルの内容にCSSクラス名を追加する

など、クラス名を変更するアクセスする必要があります。 renderに初期スタイルを設定し、必要に応じてonBrowserEventに変更し、その要素を追跡して外部コードで使用することもできます。これは不完全です。なぜなら、onBrowserEventが呼び出されるまで要素を取得することはできないし、別の場所にスタイルを設定する必要があるため、面倒なことです。

セルの状態が変わるたびにテーブル全体を再描画せずにこの効果を得るには、より良い方法はありますか?

答えて

0

ここでの失望している答えは、静的な、一度に一度にレンダリングされる、動的に変化する1つの要素で更新するという、両方の世界を最大限に活用できないということです。 CellTableなどが提供するメソッドの中で、単一のセルのスタイルを変更する唯一の方法は、テーブル全体を再レンダリングすることです。

私自身のコードでは、各テーブルセルにレンダリングされるdivのDOM idを設定することで、一度に1つのセルを更新するためのハックを形式化しました。それから私はgetElementByIdを使用し、そこから進めることができます。私はまだ完全なウィジェットのオーバーヘッドを避ける。それはちょっとしたものですが、良いインターフェイスの後ろに隠れていてもそれほど悪くはありません。

1

私はあなたの問題を解決するためにGWT 2.4で動作するはず

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

    return null; 
} 
}); 

のようなものを見つけました。

+0

これは最初のレンダリングに適しています - ありがとう! –