GWT-记住RangeChangeEvent发送到表后复选框的状态
我有一个附加了多重选择模型的CellTable。在对数据进行一些修改之后,必须刷新表,并且必须从服务器重新加载新数据 但是,我需要更新新加载数据的复选框状态。所以我可以使用selectionModel.getSelectedSet()查询选择框,但现在我需要在表中找到这些对象并“检查”它们 因为对象的内容发生了变化,而且它们在GWT组件的内部映射中用作键,所以我被迫在这些对象上编写“包装器”,它在equals/hashCode中只使用ID 所以基本上我在触发事件之前保存selectedSet,然后迭代它并调用setSelected方法:GWT-记住RangeChangeEvent发送到表后复选框的状态,gwt,selection,gwt-celltable,Gwt,Selection,Gwt Celltable,我有一个附加了多重选择模型的CellTable。在对数据进行一些修改之后,必须刷新表,并且必须从服务器重新加载新数据 但是,我需要更新新加载数据的复选框状态。所以我可以使用selectionModel.getSelectedSet()查询选择框,但现在我需要在表中找到这些对象并“检查”它们 因为对象的内容发生了变化,而且它们在GWT组件的内部映射中用作键,所以我被迫在这些对象上编写“包装器”,它在equals/hashCode中只使用ID 所以基本上我在触发事件之前保存selectedSet,然
Set<T> selectedSet = selectionModel.getSelectedSet();
RangeChangeEvent.fire(table,...)
if (selectedSet != null)
for (T obj : selectedSet) {
selectionModel.setSelected(obj,true);
}
}
Set selectedSet=selectionModel.getSelectedSet();
RangeChangeEvent.fire(表…)
如果(selectedSet!=null)
对于(目标:已选择的集合){
selectionModel.setSelected(obj,true);
}
}
有更好的方法吗?这就是
ProvideKey
的目的:创建一个ProvideKey
实例,返回要用作其键的对象ID,并在构建选择模型时将该实例传递给选择模型:
MultiSelectionModel selectionModel=new MultiSelectionModel(new ProvidesKey()){
@凌驾
公共对象getKey(X项){
return item.getId();
}
});
这样,在检索到更新的数据后,您不应该对选择模型有任何特殊的处理:将其推送到表中,它会询问每个对象的选择模型是否被选中,并且选择模型将能够仅基于对象的ID进行回答,因此,重新使用与以前相同的选定集。这是否意味着我不必重写类中的equals/hashCode,而只需在更新表内容后传递“selected”对象?绝对如此。默认情况下,选择模型使用一个将对象本身用作其关键点的;这意味着将在对象本身上使用
equals
和hashCode
。使用返回对象ID的ProvidesKey
,equals
和hashCode
将用于ID,而不是对象。你不应该有什么特别的事要做。检索更新数据后的选择模型,只需在单元格表上setRowData
,就完成了:选择模型将仅存储ID