0

こんにちは、私はCellTableに表示する情報を持つContactクラスを持っています。CellTableには、ContactのID をチェックするDataListProviderMultiSelectionModel、および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();
                }

            });
}

連絡先を変更せずにメソッドを呼び出すと、まだ機能しており、選択を解除できますが、名前などを変更すると、他のアイテムを選択したり、現在のアイテムを選択解除したりできません!

4

1 に答える 1