引入PagingMemoryProxy.js 对本地数据进行分页 但是排序有问题,每次点击排序只是对当前页管用 尝试好心人的提示用load({params:{start:0,limit:10,sort:'列',dir:'DESC'}})并加到了grid的headerclick中,但是每次点击分页时又会乱掉,而且我实现对本地查询时,用了store的filter,也是只能对当前页的内容进行过滤。
直接用这个吧,官方推荐的
Ext.ux.data.PagingStore
[url]http://extjs.com/forum/showthread.php?t=57386[/url]
刚看了PagingMemoryProxy的源码,里面有params.filter和params.sort
你试下吧.
[code="javascript"]
// filtering
if (params.filter!==undefined) {
result.records = result.records.filter(function(el){
if (typeof(el)=="object"){
var att = params.filterCol || 0;
return String(el.data[att]).match(params.filter) ? true : false;
} else {
return String(el).match(params.filter) ? true : false;
}
});
result.totalRecords = result.records.length;
}
// sorting
if (params.sort !== undefined) {
// use integer as params.sort to specify column, since arrays are not named
// params.sort=0; would also match a array without columns
var dir = String(params.dir).toUpperCase() == "DESC" ? -1 : 1;
var fn = function(r1, r2){
return r1 < r2;
};
result.records.sort(function(a, b) {
var v = 0;
if (typeof(a)=="object"){
v = fn(a.data[params.sort], b.data[params.sort]) * dir;
} else {
v = fn(a, b) * dir;
}
if (v == 0) {
v = (a.index < b.index ? -1 : 1);
}
return v;
});
[/code]
排序主要是用 dir(正反序) 和sort(排序的字段INDEX),过滤是用filter(过滤的匹配式)和filterCol(过滤的字段依据的index)
你用的store的filter应该是不行的,因为它先把数据给过滤后才填入store的,你需要用新的参数load.
多试下吧,我这没环境测试.