1

假设我有一家商店:

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 加载它,这非常适合我最初加载此商店时,但后来我希望能够加载所有这些,也就是我希望能够更改 pageSize。我尝试了以下方法:

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。无论如何要更改它并强制它更改它自己的页面大小?

编辑(附加信息):

所以另一个奇怪的部分是当我执行以下操作时:

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”函数,第二行来自我的重新加载函数。所以很明显我要取回我所有的记录,但其中大部分都被封锁了。

4

2 回答 2

3

尝试这个:

Ext.getStore('MyTestStore').reload({start:0, limit:50000});
Ext.apply(Ext.getStore('MyTestStore'), {pageSize: 50000});

'limit' & 'pageSize' 应该保持这个值。

于 2014-02-18T06:39:52.827 回答
0

从商店配置更改 pageSize。您可以调用 nextPage() 到下一页。

如果要更改每个页面的编号记录,可以将 loadPage 与 pagenumber 和选项一起使用。请参阅此链接。您可以使用您在示例中使用的相同选项。

试试这个,让我知道。

于 2014-01-27T11:08:08.410 回答