私は長い間それを探していました、そして(私自身の観点から)これはずっと前に行われるべきであった基本的な振る舞いです:あなたは列によってグリッドをソートします、例えば " NAME
"、レコードを変更すると、名前「AAA
」が「ZZZ
」になり、サーバーに送信されます。サーバーは「ok」と「」で応答するZZZ
ため、値は更新されますが同じ場所にとどまります。つまり、並べ替え順序は更新されません。
これを自動的に行う方法はありますか?どのイベント、どのコード?どのように?
サーバーから「ok」を取得したら、storeメソッドを明示的に呼び出すことができます。何かのようなもの:
myStore.sort("name","ASC");
または、並べ替え列のコレクションがある場合はsorters
、ストアで使用可能なプロパティを利用できます。好き:
myStore.sort(myStore.sorters); // this uses the existing sorting rules applied to the store
お役に立てれば。
私はSenchaのフォーラムで質問しましたが、歴史上初めて、stackoverflowで答えを得ることができました。だから、答えを共有するために、これが機能する私のコードです:
Ext.define('Ext.data.StoreHandleErrors', {
extend: 'Ext.data.Store',
alias: 'data.storehandleerrors',
constructor: function(config) {
this.callParent([config]);
this.on(
'write',
function(me, opts) {
this.sort();
},
this
);
}
});
説明:コンストラクターをオーバーライドして、「書き込み」イベントが呼び出されるたびに、つまりレコードがサーバーに送信されるたびに、ストアを再ソートして、常に適切に更新されるようにします。これは「多すぎる」(=書き込みごとに再ソートする必要がない)可能性のある一般的な方法ですが、(1)すべてのストアで機能します(2)Abdelが提案したようなカスタムハードコードされたものを作成する必要はありません(ただし、Abdelの回答は、特定のコードで1回だけ作成する方が適している場合があります)。