如何基于每个项目设置CellList项目的样式?

时间:2013-02-28 17:04:37

标签: gwt celllist

我在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>

3 个答案:

答案 0 :(得分: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-disabled类添加到您的css文件中,开始设置样式。

答案 1 :(得分:1)

使用CellList.getRowElement()

cellList.getRowElement(3).addClassName("css-disabled");
cellList.getRowElement(4).addClassName("css-active");

答案 2 :(得分:0)

texasbruce的答案是解决方案,但如果你使用的是ListDataProvider,那么你需要修改对addClassName()的任何调用的时间:

new Timer() {
    @Override
    public void run() {
        << call cellList.getRowElement(0).addClassName("css-disabled") here >>;
    }
}.schedule(1);