GWT标题复选框,用于选中/取消选中表格中的所有复选框

时间:2012-07-17 09:17:57

标签: gwt checkbox header celltable

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

到目前为止,我已经使用此代码为复选框创建了一个列,而普通表与CellTable的Google教程基本相同:

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

现在我正在搜索代码,在标题中添加一个复选框,以及如何选中或取消选中所有复选框。

感谢您的时间。

2 个答案:

答案 0 :(得分:4)

来自my blog帖子:

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

selection

我正在使用选择模型和数据列表提供程序来进行选择魔术。它可能对每个人都不起作用。

这是我的自定义标题:

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

}

答案 1 :(得分:3)