我发现如果你有一个GWT CellTable
并添加一个包含CheckboxCell
的列,那么通过SingleSelectionModel
的选择将不再有效。此单元格类型确实阻碍了行选择。
以下代码示例演示了2.5.0.rc1中的此行为。
final CellTable<LicenseDto> licenseTable = new CellTable<LicenseDto>();
final SingleSelectionModel<LicenseDto> selectionModel = new SingleSelectionModel<LicenseDto>();
licenseTable.setSelectionModel(selectionModel);
//--- If I add this column, the selection does work.
Column<LicenseDto, String> workingColumn = new Column<LicenseDto, String>(new TextCell()) {
@Override
public String getValue(LicenseDto object) {
return "Works";
}
};
workingColumn.setFieldUpdater(new FieldUpdater<LicenseDto, String>() {
@Override
public void update(int index, LicenseDto object, String value) {
;
}
});
licenseTable.addColumn(workingColumn);
//--- If I add this column, the selection does NOT work anymore.
Column<LicenseDto, Boolean> notWorkingColumn = new Column<LicenseDto, Boolean>(new CheckboxCell(true, true)) {
@Override
public Boolean getValue(LicenseDto object) {
return object.getEnabled();
}
};
notWorkingColumn.setFieldUpdater(new FieldUpdater<LicenseDto, Boolean>() {
@Override
public void update(int index, LicenseDto object, Boolean value) {
presenter.enableLicense(object, value);
}
});
licenseTable.addColumn(notWorkingColumn);
initWidget(licenseTable);
您可以组合多个单元格并将它们添加到表格中(例如LinkActionCell
等)。只要没有CheckboxCell
,SingleSelectionModel
的蓝色选择就像魅力一样。有谁看到我对这个CheckboxCell
做错了还是有错误?
答案 0 :(得分:3)
handlesSelection = true
甚至认为我没有处理任何事情。将其设置为false可以解决问题。
顺便说一句,我在列中添加fieldUpdater
来处理复选框的勾选或取消勾选:
Column<LicenceDto, Boolean> enableLicenseColumn = new Column<LicenceDto, Boolean>(new CheckboxCell(false, false)) {
@Override
public Boolean getValue(LicenceDto object) {
return object.getEnabled();
}
};
enableLicenseColumn.setFieldUpdater(new FieldUpdater<LicenceDto, Boolean>() {
@Override
public void update(int index, LicenceDto object, Boolean value) {
presenter.enableLicense(object, value);
}
});
问题得到解答。