0

GWT 2.5 に CellList があります。各セル項目は、AbstractCell に基づくクラスであり、UiBinder ファイルで定義されています。

アイテムごとに異なるスタイルを設定するにはどうすればよいですか? 「無効」なスタイルで表示されるものと、「アクティブな」スタイルで表示されるものを希望します。

これは、私の .ui.xml ファイルの内容です。スタイルの定義や UiBinder の足場は含めていません。

<div class="{style.contact}">
    <div>
        <div>
            <img class="{style.photo}" src="{photo}"/>
        </div>
        <div class="{style.names}">
            <div>
                <p><ui:text from="{name}"/></p>
                <p><ui:text from="{jobTitle}"/></p>
                <p><ui:text from="{company}"/></p>
            </div>
        </div>
    </div>
</div>
4

3 に答える 3

1

次のようにセルのrender()メソッドをオーバーライドすることで、スタイル名を追加できます-

@Override
public void render( com.google.gwt.cell.client.Cell.Context context, T value, SafeHtmlBuilder sb )
{   
    if( disable condition met )
    {
            // Apply disabled style
        sb.appendHtmlConstant( "<div class='css-style-disabled' >"+ value+" </div>" 
    } 
    else
    {
            super.render( context, value, sb );
    } 
}

したがって、css-style-disabledcssファイルにクラスを追加してスタイリングを開始します。

于 2013-03-01T03:37:13.597 に答える
1

使用CellList.getRowElement():

cellList.getRowElement(3).addClassName("css-disabled");
cellList.getRowElement(4).addClassName("css-active");
于 2013-03-01T04:00:12.650 に答える
0

texasbruce の答えが解決策ですが、ListDataProvider を使用している場合は、次のように addClassName() への呼び出しのタイミングを変更する必要があります。

new Timer() {
    @Override
    public void run() {
        << call cellList.getRowElement(0).addClassName("css-disabled") here >>;
    }
}.schedule(1);
于 2013-03-21T16:37:16.843 に答える