0

我正在尝试在 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() );

我正在获取文本框,但该值未填充。

谁能解释这种行为。如何填充该值?

4

2 回答 2

1

不要创建 FlowPanel 和 TextBox 小部件。反而:

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

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

于 2012-09-13T13:43:04.697 回答
-1

你为什么不使用 TextInputCell http://www.gwtproject.org/javadoc/latest/com/google/gwt/cell/client/TextInputCell.html

于 2013-10-24T22:54:06.383 回答