autosave
をfalse
に設定したExt JSグリッドストアがあります。
サーバーのレコードに影響を与えたり、レコードを削除したりせずに、ローカルストアのみをクリアしたい。
store.removeAll()
を試した場合、次のストア書き込みが発生すると、すべてのレコードが削除されます。
呼び出し方法store.removeAll
その後に保留中の変更をすべて消去しますか?
Store.loadData([],false);
このステートメントは、ローカルキャッシュを削除し、変更をサーバー側に送信しません
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();
ExtJS 4.1の場合、これはバッファキャッシュ(プリフェッチされたデータ)をクリアするため、次回ロード(またはloadPage)するときに、ストアはページを最初からリロードします。
store.pageMap.clear();
以前は次のように行われていました。
store.prefetchData.clear();
わかりました。ローカルストアへの変更を無視し、サーバー側に送信しないことを理解しています。あなたは使ってみましたか:
myStore.rejectChanges();
このメソッドは、変更されたすべてのレコードの未解決の変更をすべてクリアします。これにより、保留中の変更がすべて拒否されます。