2011-04-07 61 views
1

将不胜感激的任何想法。表和分页

要求

(A)含表

A.1 text columns 
A.2 one column for HTML content 
A.3 one column to house a radio button group 

(B)通过所述记录的能力,以页,例如通过使用SimplePager。

替代迄今认为

  1. FlexTable - 可以提供所有的(A),但不(B)
  2. CellTable - 可以提供A.1和(B),但不甲.2也没有A.3

任何人都可以提供一个替代品提供所有的A和B吗?我也看过Smart GWT,但没有看到我可以使用的任何东西。但是我对GWT或Smart GWT都不是很有经验。

谢谢。


[编辑1]现在创建如下三个按钮单选按钮组(“InterimReport”是我的数据类型):

Column<InterimReport, SafeHtml> radioButtonColumn = new Column<InterimReport, SafeHtml>(new SafeHtmlCell()) { 

    @Override 
    public SafeHtml getValue(InterimReport object) { 
    String s = "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex") + " value=\"match\" /> match<br />"+ "<input type=\"radio\" name=\"selection\"" + object.get("dbIndex")+ " value=\"nomatch\" /> no match<br />" + "<input type=\"radio\" name=\"selection\""+ object.get("dbIndex") + " value=\"urlnotfound\" /> URL not found</>"; 

    return SafeHtmlUtils.fromTrustedString(s); 
    } 
}; 

[编辑2]但是,如何捕获用户的选择一个单选按钮?这段代码似乎并不做任何事情:

radioButtonColumn.setFieldUpdater(new FieldUpdater<InterimReport, SafeHtml>() { 
    public void update(int index, InterimReport object, SafeHtml value) { 
     System.out.println("Reached here"); 
     if (value.equals("match")) { 
      setMatch(object.get("dbIndex"), index); 
     } else if (value.equals("nomatch")) { 
      setNoMatch(object.get("dbIndex"), index); 
     } else if (value.equals("urlnotfound")) { 
      setUrlNotFound(object.get("dbIndex"), index); 
     } 
    } 
}); 
+0

为什么这么说CellTable不能提供A.2和A.3? – 2011-04-07 16:32:56

回答

0

一个CellTable可以保存HTML内容(SafeHtmlCell)等也可以按住一个单选按钮组。只需使用<input type="radio" name="whatever"/>作为HTML。你不能在CellTable中使用Widgets - 其他所有东西都能正常工作。

Column<YourType, SafeHtml> radioColumn = new Column<YourType, SafeHtml>(new SafeHtmlCell()) 
{ 
    @Override 
    public SafeHtml getValue(YourType object) 
    { 
     return generateInputHtmlFromObject(object); 
    } 
} 

cellTable.addColumn(radioColumn); 

(对不起,未测试的代码。也许我misremember方法签名,或某事)

+0

非常感谢您的回复,莱利。我已成功创建单选按钮组(请参阅上面的编辑1),但无法让用户选择单选按钮进行注册 - 编辑器2中的println未到达。我正确使用setFieldUpdater()吗? – cvh 2011-04-08 11:38:37

+0

是的,这是setFieldUpdater的正确方法,但不幸的是,SafeHtmlCell实现并未实际调用其字段更新程序!令人沮丧,我知道。你可以在''标签上设置一个id,并使用'DOM'包来获取值(只能被动地(:()或者你可以继承SafeHtmlCell以使它在你点击或者选择输入时调用它的valueupdater看看“com.google.gwt.cell.client.CheckboxCell”的来源,看看谷歌是如何做它的复选框的。祝你好运!一旦你通过了麻木的学习曲线,细胞的东西是相当的不错。 – 2011-04-08 12:32:22

+0

谢谢,我会放弃它! – cvh 2011-04-09 08:08:22