GWT Datagrid:将小部件插入列中

GWT Datagrid:将小部件插入列中,gwt,datagrid,gwt-celltable,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 v

我试图在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();
        }
    };

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


有人能解释这种行为吗。如何填充值?

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

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

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

为什么不使用TextInputCell

谢谢您的回复。这将成为textbox的特定解决方案。如何推广它?你为什么要推广它?已经有很多有用的单元格可用于复选框、文本框、列表、图像、按钮等。它们都有额外的功能,如果只是将HTML添加到抽象单元格中,就会丢失这些功能。如果不添加任何特殊功能,请使用其中一个单元格。如果你添加了自定义特性,你就不能概括它。我有一个非常具体的要求。所以我没有使用TextInputCell。在评论或回答之前阅读问题。
sb.appendEscaped( fp.getElement().getString() );
sb.appendHtmlConstant( fp.getElement().getInnerHTML() );
sb.appendHtmlConstant("<input class=\"gwt-TextBox\" type=\"text\" value=\"" + myValue + "\"></input>");