web-dev-qa-db-ja.com

サーバーのレコードに影響を与えたり削除したりせずにExt JSストアをクリアする方法

autosavefalseに設定したExt JSグリッドストアがあります。

サーバーのレコードに影響を与えたり、レコードを削除したりせずに、ローカルストアのみをクリアしたい。

store.removeAll()を試した場合、次のストア書き込みが発生すると、すべてのレコードが削除されます。

呼び出し方法store.removeAllその後に保留中の変更をすべて消去しますか?

24
Bdfy
Store.loadData([],false);

このステートメントは、ローカルキャッシュを削除し、変更をサーバー側に送信しません

51
Anton

RemoveAllには、サーバーから削除するのではなく、レコードをクリアするために使用できるサイレントパラメータがあります。

http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.data.Store-method-removeAll

gridPanel.store.removeAll(true);

コードのコメントから:

    if (silent !== true) {  // <-- prevents write-actions when we just want to clear a store.
        this.fireEvent('clear', this, items);
    }

次に、GridPanelを手動で更新して、呼び出す必要があるすべての行をクリアしたい場合:

gridPanel.view.refresh();
6
geographika

ExtJS 4.1の場合、これはバッファキャッシュ(プリフェッチされたデータ)をクリアするため、次回ロード(またはloadPage)するときに、ストアはページを最初からリロードします。

store.pageMap.clear();

以前は次のように行われていました。

store.prefetchData.clear();
2
PavelHolec

わかりました。ローカルストアへの変更を無視し、サーバー側に送信しないことを理解しています。あなたは使ってみましたか:

myStore.rejectChanges();

このメソッドは、変更されたすべてのレコードの未解決の変更をすべてクリアします。これにより、保留中の変更がすべて拒否されます。

1
Abdel Raoof