2013-07-09 5 views
0

Скажем, у меня есть магазин:ExtJS: Alter магазин PAGESIZE

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, который идеально подходит для того, когда я загружаю этот магазин первоначально, но позже I хочу, чтобы иметь возможность загрузить все это, иначе я хочу, чтобы иметь возможность изменять 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. Есть ли способ изменить ее и заставить ее изменить ее собственную страницу?

Edit (Дополнительная информация):

Так другая странная часть, что, когда я делаю следующее:

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

изменить размер страницы из конфигурации магазина. Вы можете вызвать nextPage() на следующую страницу.

Если вы хотите изменить числовые записи для каждой страницы, вы можете использовать loadPage с pagenumber и опциями. См. this link. Вы можете использовать те же опции, которые вы использовали в своем примере.

Попробуйте это и дайте мне знать.

2

Попробуйте это:

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

'предел' & 'PAGESIZE' должен сохранить значение.