GWT Datagrid:将小部件插入列中

时间:2012-09-13 08:03:50

标签: gwt datagrid gwt-celltable

我正在尝试在datagrid列中插入一个文本框。我知道我可以使用TextCell或EditTextCell,但出于某种原因,我选择了TextBox。

我选择了以下方法

Cell<String> cell = new AbstractCell<String>()
    {

        @Override
        public void render( com.google.gwt.cell.client.Cell.Context context, String value, SafeHtmlBuilder sb )
        {
            FlowPanel fp = new FlowPanel();
            TextBox tb = new TextBox();
            tb.setText( value );
            fp.add( tb );
            sb.appendEscaped( fp.getElement().getString() );
        }
    };
    // Address.
    Column<ContactInfo, String> addressColumn = new Column<ContactInfo, String>( cell )
    {
        @Override
        public String getValue( ContactInfo object )
        {
            return object.getAddress();
        }
    };

我在这里遇到的问题是我在UI而不是文本框

中获得以下内容
<div><input class="gwt-TextBox" type="text"></div>

但是当我更换

sb.appendEscaped( fp.getElement().getString() );

sb.appendHtmlConstant( fp.getElement().getInnerHTML() );

我正在获取文本框,但是值没有填充。

任何人都可以解释这种行为。如何填充值?

2 个答案:

答案 0 :(得分:0)

不要创建FlowPanel和TextBox小部件。代替:

sb.appendHtmlConstant("<input class=\"gwt-TextBox\" type=\"text\" value=\"" + myValue + "\"></input>");

其中myValue是您希望在文本框中看到的内容。

答案 1 :(得分:-1)