你好,我有一個聯繫類的信息,我在CellTable顯示的信息。 的CellTable有DataListProvider,MultiSelectionModel和KeyProvider 它檢查聯繫的ID。GWT CellTable SelectionModel編輯後不能取消選擇
DataListProvider和CellTable具有相同的KeyProvider。
如果我只選擇/取消在CellTable的項目,並在文本框助攻顯示他們工作的罰款。但是當我更改TextBox(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
當我選擇一個項目i生成表現公式和如果我改變了我的電話號碼:
@Override
public void save() {
super.save();
ContactServiceStore.get().updateContact(manager.getBean(),
new MyAsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
onchange();
}
});
}
我打電話,如果不改變的方法上的接觸其還在工作,我可以取消,但是當我更改名稱或別的東西,我不能選擇其他的項目或取消當前的項目!
你可以在問題中加入一些代碼嗎?也許'ValueUpdater'實現以及'DataListProvider'和'MultiSelectionModel'的'KeyProvider'。 – enrybo 2013-05-07 16:36:32
好的我已編輯 – 2013-05-08 07:23:02
在你的'KeyProvider'中放置了一個斷點,並確保它真的被調用。難道是保存實例時引發異常嗎?如果沒有捕獲到異常,它可能會中斷取消選擇代碼的執行(檢查Chrome開發者工具控制檯) – 2013-05-08 11:19:17