4

Ext.grid.Panel がうまく機能しており、列ヘッダーをクリックして「自動」ソートを行うことができます。ストアには「autoSync: true」があります。「新規」ボタンがあり、ユーザーがクリックすると、id プロパティのない空のレコードが作成されます。

onAddClick: function(){
    this.down('#new').setDisabled(true);
    var rec = new GroupeSynergies.data.Partenaire({
        /* Valeurs par défaut des colonnes */
        description: 'Nouveau partenaire'
    });
    this.store.insert(0, rec);
},

レコードが自動的に同期されることがわかっているため、レコードを #0 の位置に挿入します (これが実際に起こっていることです)。問題は、「id」列をクリックすると、id asc でソートされ、もう一度クリックすると逆順になることです。

次に、「新規」ボタンをクリックすると、空の新しいレコードが作成され、サーバーに送信され、id フィールドが完成した結果のレコードが取得され、グリッドが更新されますが、並べ替えは考慮されません。同期すると、返される ID が非常に高くなり、並べ替え順序に関係なく、一番上にとどまります。私は何を間違っていますか?

どうもありがとうございました

(PS Sencha のフォーラムが混雑しているように見えるので、stackoverflow で質問しています)

4

2 に答える 2

4

同様の状況で、私が見つけた解決策は、ストアの「書き込み」イベント ハンドラーに store.sort を追加することです。

Ext.application({

    (...)

    launch: function() {

        var myStore = this.getStore('myStore');
        myStore.on('write', function(store, operation){ store.sort('id','ASC') }; );

    }

});

必要に応じて並べ替えパラメーターを調整します。「ソート」メソッドのドキュメント。

ストアのプロキシにセットがある場合writer、並べ替えは単純な「更新」でも実行されます。この状況を回避するために、operationパラメーターの値をテストできます。 「書き込み」イベントのドキュメント。

それがより良い方法であるかどうかはわかりませんが、今のところ見つけたのはこれだけです。

于 2011-10-18T14:01:34.217 に答える