我需要 GWT CellTable 的“自定义选择模型”。 CellTable 中的其中一列是复选框列。
基本要求(均适用于以下解决方案):
- 单击行(不是在复选框上),选择该行并取消选择所有其他行。
- 复选框选择应该只选择/取消选择该行。
以下是我正在使用的代码,但速度非常非常慢。任何指导将不胜感激。
final SelectionModel<T> selectionModel = new MultiSelectionModel<T>();
dataTable.setSelectionModel(selectionModel,
DefaultSelectionEventManager.createCustomManager(
new DefaultSelectionEventManager.CheckboxEventTranslator<T>() {
@Override
public SelectAction translateSelectionEvent(CellPreviewEvent<T> event) {
SelectAction action = super.translateSelectionEvent(event);
if (action.equals(SelectAction.IGNORE)) {
selectionModel.clear();
return SelectAction.TOGGLE;
}
return action;
}
}
)
);
以下是为 CheckColumn 回调截取的代码。
Column<T, Boolean> checkColumn = new Column<T, Boolean>(
new CheckboxCell(true, false))
{
@Override
public Boolean getValue(T t)
{
// Get the value from the selection model.
return selectionModel.isSelected(t);
}
};
最佳答案
我已经为 CellTable 安装了一个 KeyProvider,它不再慢了。 :)
ProvidesKey<T> keyProvider = new ProvidesKey<T>() {
public Object getKey(T t) {
return tip == null? null : tip.getId();
}
};
dataTable = new CellTable<T>(PAGE_SIZE, keyProvider);
关于GWT CellTable 自定义选择模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10605393/