2

我一直在寻找它很长时间,并且(从我自己的角度来看)这是很久以前应该完成的基本行为:您按列对网格进行排序,例如“ NAME”,你修改一条记录,名字“ AAA”变成“ ZZZ”,它被发送到服务器,服务器用“”回答“ok”,ZZZ所以值被更新但保持在同一个地方,即排序顺序没有被刷新。

有没有办法自动做到这一点?哪个事件,哪个代码?如何?

4

2 回答 2

3

一旦从服务器获得“ok”,就可以显式调用 store 方法。就像是:

myStore.sort("name","ASC");

或者,如果您有一组排序列,则可以使用sorters商店提供的属性。喜欢:

myStore.sort(myStore.sorters); // this uses the existing sorting rules applied to the store

希望这可以帮助。

于 2012-05-02T15:38:27.817 回答
1

我在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 的答案可能更适合在特定的代码中只使用一次)。

于 2012-05-03T08:34:08.993 回答