您好,我有一个Contact类,其中包含我在CellTable中显示的信息。CellTable有一个DataListProvider、MultiSelectionModel和KeyProvider来 检查Contact的id。
DataListProvider 和 CellTable 具有相同的 KeyProvider。
如果我只选择/取消选择CellTable中的项目并将它们显示在TextBox中,则工作正常。但是,当我更改 TextBox(Contact 实例)中的 Contact 项的值并尝试取消选择该项时 selectionmodel 说它仍然被选中?
我尝试使用clear()但它仍然被选中!
GWT 2.5 / 火狐
ProvidesKey<Contact> keyProvider = new ProvidesKey<Contact>(){
@Override
public Object getKey(Contact item) {
return item.getIdContact();
}
};
public MyCellTable(boolean canLoad, Integer pagesize, ProvidesKey<T> keyProvider) {
super(-1, resource, keyProvider);
selectionModel = new MultiSelectionModel<T>();
selectionModel .addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
@Override
public void onSelectionChange(SelectionChangeEvent event) {
selectionChange();
}
});
dataProvider = new ListDataProvider<T>(keyProvider);
dataProvider.addDataDisplay(this);
}
在我调用的选择事件中
protected void selectionChange(){
Contact c = grid.getGrid().getSelectedItem();
if(c != null){
cpForm.enable();
cpForm.clear();
form.bind(c); // Formular which updates the selected instance
cpForm.add(form);
}else{
cpForm.disable(noseletionText);
}
}
我没有ValueUpdater
当我选择一个项目时,我会生成一个公式,如果我更改某些内容,我会调用:
@Override
public void save() {
super.save();
ContactServiceStore.get().updateContact(manager.getBean(),
new MyAsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
onchange();
}
});
}
我如果在不更改联系人的情况下调用该方法,它仍然可以工作,我可以取消选择,但是当我更改名称或其他内容时,我无法选择其他项目或取消选择当前项目!