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-disabled类添加到您的 css 文件开始设置样式。

于 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 回答