0

我创建了一个自定义单元格,用于确定是否显示 aSelectionCellTextCell. 在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.

4

1 回答 1

0

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

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

于 2012-08-30T12:42:48.087 回答