说我有一家商店:
Ext.define('MyApp.store.MyTestStore', {
extend: 'Ext.data.Store',
alias: 'store.MyTestStore',
requires: [
'MyApp.model.MyTestModel'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
autoSync: true,
model: 'MyApp.model.MyTestModel',
remoteFilter: true,
remoteSort: true,
storeId: 'MyTestStore',
buffered: true,
pageSize: 100,
listeners: {
load: {
fn: me.onStoreLoad,
scope: me
},
beforeload: {
fn: me.onStoreBeforeLoad,
scope: me
}
}
}, cfg)]);
},
onStoreLoad: function(store, records, successful, eOpts) {
console.log('load', records.length);
},
onStoreBeforeLoad: function(store, operation, eOpts) {
console.log('beforeload',operation);
}
});
正如你最初看到我用pageSize:100加载它,这对我最初加载这个商店非常适合,但后来我希望能够加载所有这些我想要能够改变它页面大小。我尝试了以下方法:
Ext.getStore('MyTestStore').reload({params:{start:0, limit:50000}});
Ext.getStore('MyTestStore').reload({start:0, limit:50000, page:1, addRecords:true});
但似乎都没有奏效。我认为这显然是因为pageSize仍然设置为100.所以我去了更新商店:
Ext.getStore('MyTestStore').lastPageSize = 50000;
Ext.getStore('MyTestStore').pageSize = 50000;
Ext.getStore('MyTestStore').pageMap.pageSize = 50000;
现在当我在console.log(Ext.getStore('MyTestStore'))时,一切都正常显示,但我仍然只获得100条记录。我查看了从服务器返回的代码并且我正确地获取了每条记录,但是当函数'onload'运行时,记录计数保持在100.无论如何要改变它并强制它改变它自己的页面大小? / p>
编辑(附加信息):
另一个奇怪的部分是当我做以下事情时:
Ext.getStore('MyTestStore').reload({start:0, limit:50000, page:1, addRecords:true, callback : function(r, options, success) {
console.log(r.length,success)
}});
我回来了:
load 100
6362 true
在我的控制台中。第一行来自'onStoreLoad'函数,第二行来自我的重载函数。很明显,我正在收回我的所有记录,但其中大部分都被封锁了。
答案 0 :(得分:3)
试试这个:
Ext.getStore('MyTestStore').reload({start:0, limit:50000});
Ext.apply(Ext.getStore('MyTestStore'), {pageSize: 50000});
'限制'& 'pageSize'应保留该值。
答案 1 :(得分:0)
从商店配置更改pageSize。您可以将nextPage()调用到下一页。
如果要更改每个页面的数字记录,可以将loadPage与pagenumber和options一起使用。见this link。您可以使用在示例中使用的相同选项。
试试这个并告诉我。