我需要GWT CellTable的'自定义选择模型'。 CellTable中的一列是Checkbox列。
基本要求(均在下面的解决方案中工作):
- 行单击(不在复选框上),选择该行并取消选择所有其他行
- 复选框选择应仅选择/取消选择该行。
以下是我正在使用的代码,但它非常慢。任何指导都将不胜感激。
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);
}
};
答案 0 :(得分:3)
我为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);
答案 1 :(得分:0)
您可以将复选框列入白名单
int checkboxColumn = 0;
DefaultSelectionEventManager.createCustomManager(new DefaultSelectionEventManager
.WhitelistEventTranslator(checkboxColumn));