0

私はjsonstoreを持っています。

var speedDialStore = new Ext.data.JsonStore({
                pageSize: 4,
                proxy   : {
                    type: 'ajax',
                    url: 'speedDialListByHospitalID.html',
                    actionMethods: {
                        create: 'POST', read: 'POST', update: 'POST', destroy: 'POST'
                    },
                    reader: {
                        type: 'json',
                        root: 'results',
                        totalProperty: 'total',
                    }
                },
                fields      : [{name:"id"},{name:"code"},{name:"name"},{name:"description"},{name:"hospitalID"},{name: "buildingID"},{name: "floorID"},{name:"alarmID"},{name:"notificationFrequency"},{name:"maxCount"},{name:"start"}],
                listeners: {
                  load : function (store, records, success, operation, options) {
                    if(records != null){
                        store.loadData(records.slice(records[0].get('start'),records[0].get('start')+4));
                    }
                  } 
                }

            });

そして、このストアを使用するグリッド。

私の問題は、グリッドを並べ替えるときに、すべてのストアを並べ替えて、最初のページに最初の4つの要素を表示し、2番目のページに2番目の4つの要素を表示する必要があることです。

listeners:{
                        'sortchange': function(ct, column, direction, eOpts ){
                                Ext.getCmp('speedDialPaging').moveFirst();
                                speedDialStore.sort(column.dataIndex, direction);
                        }
                    },

スライスメソッドが機能した後も、グリッドにはソートされていない4つの要素が表示されます。しかし、スライスメソッドにアラートメッセージまたはブレークポイントを追加すると、ストアが正しくソートされていることがわかります。したがって、(私は)スライスメソッドを変更するか、この問題を解決する他の方法を見つける必要があります。サーバーはすべてのデータを送信しています。サーバー側ではなく、ここでこの問題を解決する必要があります。

4

1 に答える 1

0

このようにストアリスナーを変更し、

listeners: {
                  load : function (store, records, success, operation, options) {
                    if(records != null && records.length > 0){
                        function compare(a,b) {
                          if (a.get(sortIndex) < b.get(sortIndex))
                             return -1;
                          if (a.get(sortIndex) > b.get(sortIndex))
                            return 1;
                          return 0;
                        }
                        records.sort(compare);
                        if(sortDirection == "DESC"){
                            records.reverse();
                        }
                        store.loadData(records.slice(records[0].get('start'),records[0].get('start')+4));
                    }
                  } 
                }

このような並べ替えリスナー、

 sortIndex = column.dataIndex;
 sortDirection = direction;

できます!

于 2012-11-07T13:09:19.947 に答える