2

我用 Google Web Toolkit 创建了一个 CellTable。我刚开始使用它,我对它的了解非常少......但是我正在寻找一个教程或只是一个如何在 CellTable 标题中创建复选框的代码示例,但我发现我不明白或它没有用。

到目前为止,我已经得到了这个代码来为复选框和一个普通表创建一个列,这与谷歌的 CellTable 教程基本相同:

Column<Contact, Boolean> checkColumn = new Column<Contact, Boolean>(
new CheckboxCell(true, false)) {

@Override
public Boolean getValue(Contact contact) {
    return null;
}

};

table.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
table.setColumnWidth(checkColumn, 40, Unit.PX);

现在我正在搜索代码以将复选框添加到标题以及如何使其选中或取消选中所有复选框。

谢谢你的时间。

4

2 回答 2

4

我的博客文章:

这是一个简单的列标题,用于选择/取消选择表中的所有行。当所有行都被选中时,标题会自动被选中。单击标题中的复选框会导致选择或取消选择所有行。

选择

我正在使用选择模型和数据列表提供程序来执行选择魔术。它可能并不适合所有人。

这是我的自定义标题:

public final class CheckboxHeader extends Header {

    private final MultiSelectionModel selectionModel;
    private final ListDataProvider provider;

    public CheckboxHeader(MultiSelectionModel selectionModel,
            ListDataProvider provider) {
        super(new CheckboxCell());
        this.selectionModel = selectionModel;
        this.provider = provider;
    }

    @Override
    public Boolean getValue() {
        boolean allItemsSelected = selectionModel.getSelectedSet().size() == provider
                .getList().size();
        return allItemsSelected;
    }

    @Override
    public void onBrowserEvent(Context context, Element elem, NativeEvent event) {
        InputElement input = elem.getFirstChild().cast();
        Boolean isChecked = input.isChecked();
        for (TYPE element : provider.getList()) {
            selectionModel.setSelected(element, isChecked);
        }
    }

}
于 2012-07-17T19:43:17.900 回答
3

请参阅http://code.google.com/p/google-web-toolkit/issues/detail?id=7014

于 2012-07-17T09:52:42.713 回答