ext 如何实现内存分页

ext 如何实现内存分页??

汗个... 原来examples里已经有实现了

看了下,实现的功能完善多了,还支持过滤与排序

另外发现我前面发的代码还是有个问题,应该是slice(start, start + limit)

你是说Grid吧?
Grid的分页是依赖于Store的远程分页,即,Store中当前有多少条数据,Grid就显示多少条。

想要做到内存分页(即本地分页),可以在Store的proxy上下手,让Store从本地加载数据,从而模拟出分页。

简单的办法是给Store配置proxy,可以从MemoryProxy扩展,并继承doRequest方法,在其中判断数据范围,从而设定不同的返回值:

[code="js"]
var MyLocalProxy = Ext.extend(Ext.data.MemoryProxy, {
constructor : function(allDatas){
this.allDatas = allDatas; // 构造时传入所有记录数据,并存储起来
MyLocalProxy.superclass.constructor.apply(this, arguments);
},
doRequest : function(action, rs, params, reader, callback, scope, arg){
var start, limit;
start = params.start || 0;
limit = params.limit || 20;
// 设定此次请求的模拟返回结果
this.data = {
success : true,
results : allDatas.length, // 总记录条件,要与JsonReader的totalProperty相符
data : this.allDatas.slice(start, limit) // 当前分页的记录,要与JsonReader的root相符
};
MyLocalProxy.superclass.doRequest.apply(this, arguments);
}
});

var allDatas = [...]; // 本地存储的所有记录
var store = new Ext.data.Store({
...
proxy : new MyLocalProxy(allDatas),
...
});
var MyGrid = new Ext.grid.GridPanel({
...
store : store,
bbar: new Ext.PagingToolbar({
...
store: store,
...
})
...
});
[/code]

上面程序有点小问题

results : allDatas.length,
应该为
results : [b]this.[/b]allDatas.length,

ext--》example--》ux里面有PagingMemoryProxy.js