3

smartGWT listGrid で特定の行を色付けすることは可能ですか? すべてのlistGridではなく、1行だけに色を付けたい

4

2 に答える 2

9

SmartGWT では、Style で終わるメソッド (get Style、getBaseStyle、getCellStyle など) は、別の場所で定義された CSS クラス (.css ファイル、アプリケーション ロード jsp のインライン css など) を返す必要があります。
set Style メソッド にも同じことが当てはまります。

そのような必要性を保証する多くの CSS カスタマイズが行われていない限り、おそらくgetCellCSSTextを使用するのが最良の選択肢でしょう。

getCellCSSText は、セルごとに CSS テキストを返し、再描画のたびに呼び出されます。

final ListGrid resultsGrid = new ListGrid() {
    @Override
    protected String getCellCSSText(ListGridRecord record, int rowNum, int colNum) {
        String style = super.getCellCSSText(record, rowNum, colNum);

        // conditions can check values in record using rowNum, colNum as well as record attributes
        if (record.getAttribute("<grid-field-name>").equals(<value>)) {
            if (this.getFieldName(colNum).equals("<certain-grid-field-name>") && record.getAttribute("<grid-field-name>").equals(<specific-value>)) {
                style = "font-weight:bold"; // only that cell in that row becomes bold
            } else {
                style = "color:red"; // all other cells in that row become red
            }
        } else if (record.getAttribute("<other-grid-field-name>").equals(<value>)) {
            style = "color:green"; // entire row changed to green if one column in this row contain a specific value
        }

        return style;
    }
};

他の理由がない限り、上記のショーケース サンプルに示されているように ListGridRecord を拡張する必要はありません。

于 2013-04-29T16:11:32.320 に答える
3

SmartGWT を使用したことはありませんが、JavaDoc を見ると、次のように言えます。

listGrid.getRecord(recordNum)

の をオーバーライドするこのサンプルもチェックしgetBaseStyle()ListGridください。

于 2013-04-29T12:25:55.820 に答える