こんにちは、私はCellTableに表示する情報を持つContactクラスを持っています。CellTableには、ContactのID をチェックするDataListProvider、MultiSelectionModel、およびKeyProviderがあります。
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();
}
});
}
連絡先を変更せずにメソッドを呼び出すと、まだ機能しており、選択を解除できますが、名前などを変更すると、他のアイテムを選択したり、現在のアイテムを選択解除したりできません!