【问题标题】:GWT Datagrid : Inserting widget into the columnGWT Datagrid:将小部件插入列
【发布时间】:2012-09-13 08:03:49
【问题描述】:

我正在尝试在数据网格列中插入一个文本框。我知道我可以选择 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() );

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

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

【问题讨论】:

    标签: gwt datagrid gwt-celltable


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。这将成为文本框的特定解决方案。如何概括?
    • 为什么需要概括它?已经有许多有用的单元格可用于复选框、文本框、列表、图像、按钮等。如果您只是将 HTML 添加到 AbstractCell,它们都具有您失去的附加功能。如果您不添加任何特殊功能,请使用其中一个单元格。而且,如果添加自定义功能,则无法对其进行概括。
    【解决方案2】:

    【讨论】:

    • 我有这个非常具体的要求。所以我没有使用TextInputCell。在评论或回答之前阅读问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多