我已经使用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);
现在我正在搜索代码,在标题中添加一个复选框,以及如何选中或取消选中所有复选框。
感谢您的时间。
答案 0 :(得分:4)
来自my blog帖子:
这是一个简单的列标题,用于选择/取消选择表中的所有行。检查所有行后,将自动检查标题。单击标题中的复选框会导致选择或取消选择所有行。
我正在使用选择模型和数据列表提供程序来进行选择魔术。它可能对每个人都不起作用。
这是我的自定义标题:
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)