2012-09-13 129 views
0

我想在datagrid列中插入一個文本框。我知道我可以使用TextCell或EditTextCell,但出於某種原因,我使用TextBox。GWT Datagrid:插入小部件到列

我用下面的方法

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(); 
     } 
    }; 

我遇到現在的問題就在於,我得到的用戶界面,而不是文本

<div><input class="gwt-TextBox" type="text"></div> 

下列但是,當我更換

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

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

我正在獲取文本框,但該值未填充。

任何人都可以解釋這種行爲。我如何填充值?

回答

0

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

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

其中myvalue的是要在文本框中看到的。

+0

感謝您的回覆。這將成爲文本框的特定解決方案。如何推廣它? –

+1

爲什麼你需要推廣它?已經有很多有用的單元格可用於複選框,文本框,列表,圖像,按鈕等。如果您只是將HTML添加到AbstractCell,則它們都具有額外的功能。如果您不添加任何特殊功能,請使用其中一個單元格。如果您添加自定義功能,則無法對其進行概括。 –