我有一个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个元素和第二页的第二个4元素等等。
listeners:{
'sortchange': function(ct, column, direction, eOpts ){
Ext.getCmp('speedDialPaging').moveFirst();
speedDialStore.sort(column.dataIndex, direction);
}
},
切片方法工作后,网格仍显示未排序的4个元素。但是如果我在切片方法中添加警报消息或断点,我会看到商店已正确排序。因此(我认为)我需要修改切片方法或找到任何其他方法来解决这个问题。服务器正在发送所有数据。我们必须在这里解决这个问题而不是服务器端。
答案 0 :(得分: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));
}
}
}
像这样的和sortchange监听器,
sortIndex = column.dataIndex;
sortDirection = direction;
它有效!