1

セル内のデータの状態に応じて変化するスタイルクラスをセル内の要素(またはtd自体)に追加したいと思います。たとえば、セルの色は、データが保存されていない場合は赤、データが保存されている場合は青、保存が正常に完了すると色は黒になります。の外部のコードCellは、コールバックが起動された後など、クラス名を変更するためにアクセスする必要があります。

onBrowserEventからCell取得し、そこに属性を追加するハックを使用して、このようなことを実現しました。Elementで初期スタイルを設定し、renderで必要に応じて変更することonBrowserEventができます。また、外部コードで使用できるように、その要素を追跡することもできます。onBrowserEventが呼び出されるまで要素を取得できないため、これは不完全です。また、2つの異なる場所でスタイルを設定する必要があるため、煩わしいハッキーです。

セルの状態が変化するたびにテーブル全体を再レンダリングせずにこの効果を実現するためのより良い方法は何ですか?

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;
}
});

これは、問題を解決するためにGWT2.4で機能するはずです。

于 2011-11-29T13:40:59.127 に答える
0

ここでの残念な答えは、静的な1回限りのレンダリングと、動的な1つの要素の更新の両方の長所を利用することはできないということです。et alによって提供された方法の範囲内で、単一のセルのスタイルを変更する唯一の方法は、CellTableテーブル全体を再レンダリングすることです。

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

于 2011-11-29T13:47:36.217 に答える