4

要件

グリッド データが並べ替えられるたびに、イベントが実行される前に、extraParams新しい並べ替えプロパティの値でストアを変更したいと考えています。同様に、列NameDESC方向にソートしている場合-イベントが実行される前に、Name列と方向プロパティDESCextraParamsでストアを上書きしたいと思います。dataIndex

私の店も にremoteSort設定されたプロパティを持っていますtrue

ExtJS 4.2 を使用しています。

問題

グリッドでイベント リスナーを試しsortchangeましたが、データ API が呼び出されてレコードが読み込まれた後に実行されます。私がしたいのはbeforesortchangeのようなものです。

これですべてremoteSort : true

this.getStore().load();次の問題は、そこから呼び出すとsortchange、データ API が 2 回呼び出されることです。これは意味がありません。

コード

グリッド リスナー:

sortchange: function(ct, column, direction, eOpts) {
    this.getStore().getProxy().extraParams = {
        'sort'  : column.dataIndex,
        'dir'   : direction
    }
    //  load() will call the data api again once the data loading is over
    //this.getStore().load();
}

グリッドリスナーも試してみましたが、新しいグリッドソートパラメーターを取得できないか、まったく呼び出されません: beforeload, beforesync, .beforeprefetchload

参考文献

https://stackoverflow.com/questions/12338407/custom-function-call-after-extjs-4-grid-sort/12338906#12338906

4

1 に答える 1

4

このイベントを使用してbeforeload、extraParam オブジェクトを送信前に変更します。

listeners: {
    beforeload: function(store, operation, eOpts){
        if(store.sorters && store.sorters.getCount())
        {
            var sorter = store.sorters.getAt(0);
            store.getProxy().extraParams = {
                'sort'  : sorter.property,
                'dir'   : sorter.direction
            };
        }
    }
}
于 2013-07-17T13:58:10.880 に答える