引入PagingMemoryProxy.js 对本地数据进行分页 但是排序有问题

引入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.

多试下吧,我这没环境测试.