表和分页

时间:2011-04-07 15:47:18

标签: gwt pagination flextable

对任何想法都会感激不尽。

要求

(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),但不能提供A.2和A.3
  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);
            }
        }
    });
    

1 个答案:

答案 0 :(得分: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);

(对不起,未经测试的代码。也许我记错了方法签名或其他什么)