【发布时间】:2015-10-01 02:42:53
【问题描述】:
在我的项目中,我有带有 CheckBoxCell 列的 CellTable。这是表示(更改)值的常规列,不用于行选择(我使用 SingleSelectionModel 进行选择)。在 Chrome 中一切正常,第一次单击时,我更改了复选框状态并选择了行。在 FireFox 中,当我尝试单击 CheckBoxCell 列中的复选框时,GWT 选择行并在第二次单击复选框后更改复选框状态。但我需要与 Chrome 中相同的行为(在第一次单击时更改复选框状态)。
这是我创建列的方式:
private <C> Column<T, C> addColumn(CellTable<T> itemListTable, Cell<C> cell, String headerText, int columnWidthPct, final IValueGetter<C, T> getter, @Nullable FieldUpdater<T, C> fieldUpdater) {
Column<T, C> column = new Column<T, C>(cell) {
@Override
public C getValue(T object) {
return getter.getValue(object);
}
};
column.setFieldUpdater(fieldUpdater);
column.setSortable(false);
itemListTable.addColumn(column, headerText);
itemListTable.setColumnWidth(column, columnWidthPct, PCT);
return column;
}
private void generateExistingSettingsTable() {
addColumn(existingSettingsTable, new ParameterizedCheckboxCell<T>(), IS_PUBLIC_HEADER, 10, new IValueGetter<Boolean, T>() {
@Override
public Boolean getValue(T setting) {
return setting.isPublic();
}
},
new FieldUpdater<T, Boolean>() {
@Override
public void update(int index, T object, Boolean value) {
object.setPublic(value);
updatePublicState(object);
}
}
);
}
我的 ParameterizedCheckboxCell 扩展 CheckboxCell 并仅覆盖渲染方法(启用\禁用复选框输入)。
我已经尝试了here 此处建议的所有内容:
- stopPropagation 对我不起作用
- 将列添加到 DefaultSelectionEventManager 黑名单,不是一个选项(复选框周围有很大的区域无法点击)
【问题讨论】:
-
我以前在 Firefox 上遇到过不同的行为。您可以尝试将 BeforeSelectionHandler 添加到该行并检查该单元格是否是具有复选框的单元格。如果是,只需选择/取消选择它。当然,这应该只针对 Firefox。
标签: firefox gwt checkbox celltable gwt-celltable