【问题标题】:Tables and paging表格和分页
【发布时间】:2011-04-07 15:47:17
【问题描述】:

如果有任何想法,将不胜感激。

要求

(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

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

谢谢。


[edit 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);
    }
};

[edit 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);
        }
    }
});

【问题讨论】:

  • 为什么说CellTable不能提供A.2和A.3?

标签: gwt pagination flextable


【解决方案1】:

CellTable 可以保存 HTML 内容 (SafeHtmlCell),因此也可以保存单选按钮组。只需使用&lt;input type="radio" name="whatever"/&gt; 作为 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);

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

【讨论】:

  • 非常感谢您的回复,莱利。我已成功创建单选按钮组(参见上面的编辑 1),但无法让用户选择要注册的单选按钮 - 未达到编辑 2 中的 println。我是否以正确的方式使用 setFieldUpdater()?
  • 是的,这就是 setFieldUpdater 的正确方法,但不幸的是 SafeHtmlCell 实现实际上并没有调用它的字段更新器!令人沮丧,我知道。您可以在 &lt;input&gt; 标签上设置一个 id 并使用 DOM 包获取值(只会被动工作:(),或者您可以将 SafeHtmlCell 子类化以使其在单击或选择输入时调用其 valueupdater(令人困惑)。查看com.google.gwt.cell.client.CheckboxCell 的源代码,看看 Google 是如何为复选框做到的。祝你好运!一旦你通过了令人麻木的学习曲线,Cell 的东西就相当不错了。
  • 谢谢,我会试试看的!
猜你喜欢
  • 2011-08-16
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 2022-07-22
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多