GWT单元格自定义列setfieldupdater不适用于ListBox

时间:2012-08-30 09:02:06

标签: gwt celltable

我创建了一个自定义单元格,用于确定是显示SelectionCell还是TextCell。如果是SelectionCell渲染,我无法触发setFieldUpdater方法。

以下代码......

private class CustomTypeCell extends AbstractCell<String>
{
    SelectionCell selectCell = new SelectionCell(cardMnemonics);
    TextCell textCell = new TextCell();

    @Override
    public void render(
            Context context,
            String value, SafeHtmlBuilder sb)
    {
        if (value != null)
        {
            textCell.render(context, value, sb);
        }
        else
        {
            selectCell.render(context, "", sb);
        }

    }
}


    private class CustomTypeColumn extends Column<Object, String>
{

    public CustomTypeColumn(CustomTypeCell cell)
    {
        super(cell);
    }

    @Override
    public String getValue(Object object)
    {
        return object.getStringValue();
    }
}

使用......

实施
CustomTypeCell cell = new CustomTypeCell();
CustomTypeColumn customCol = new CustomTypeColumn(cell);

customCol.setFieldUpdater(new FieldUpdater<Object, String>()
    {
        public void update(int index, Object object, String value)
        {
            object.setStringValue(value);
            // perform action           }
    });
cellTable.addColumn(customCol, "Custom Column");

如果我使用带有SelectionCell的标准列,这可以正常工作。

1 个答案:

答案 0 :(得分:0)

渲染是不够的,您还希望将事件处理委托给适当的单元格实现:将您的if / else结构添加到onBrowserEvent中,并确保在getConsumedEvents中监听相应的事件。
您可能还应该实现resetFocus

您可能会在CompositeCell代码中找到灵感。