Разбиение сетки Extjs 5.0 со статическими данными

Пагинация не работает для моей сетки. Может кто-нибудь, пожалуйста, дайте мне знать, почему. Я использую статические данные, полученные путем чтения xml из контроллера. Я хочу отображать 10 записей на странице.

Модель.js

Ext.define('Mymodel.model.settingModel', {
    extend: 'Ext.data.Model'
});    

Store.js

Ext.define('Mymodel.store.settingStore', {
    extend: 'Ext.data.Store',
    requires:['Mymodel.model.settingModel'],
    model: 'Mymodel.model.settingModel',
    pageSize:10,
     lastOptions: {params: {start: 0, limit: 10}}
 });

View.js

Ext.define('Mymodel.view.graphPanel', {
    extend: 'Ext.grid.Panel',
    layout:'border',
    alias: 'widget.graphPanel',
    name:'graphPanel',
    title: 'Tests',
    store: 'Mymodel.store.settingStore',
    pageSize:10,
    dockedItems: [{
        xtype: 'pagingtoolbar',
        store: 'Mymodel.store.settingStore',   // same store GridPanel is using
        dock: 'bottom',
        pageSize: 10,
        displayInfo: true
    }]
 });

Контроллер.js

Ext.define('Mymodel.controller.myController', {
extend:'Ext.app.Controller',
models:['Mymodel.model.settingModel'],
stores:['Mymodel.store.settingStore'],
init: function() {
Ext.Ajax.request({
            url: 'Sample.xml',
            success: function(response, opts) {
                var txt = response.responseText;
                parser=new DOMParser();
                xmlDoc=parser.parseFromString(txt,"text/xml");

                // I now build the modelField Array, Data Array and column array based on the xml      
                got and give it to the stores.

                var store = Ext.data.StoreManager.lookup('Mymodel.store.settingStore');
                store.setFields(modelfieldArr);
                store.setData(completeDataArr);
                store.setPageSize(10);
                store.load({
                  params: {
                    start: 0,
                    limit: 10
                 }
                 });

                var gridview = Ext.ComponentQuery.query('graphPanel')[0];
                gridview.reconfigure(store,columnarr);
            }
        });

    }
    });

person ASR    schedule 19.09.2014    source источник


Ответы (1)


Вы должны установить прокси на memory и установить enablePaging: true.

Ext.define('Mymodel.store.settingStore', {
    extend: 'Ext.data.Store',
    config: {
        proxy: {
            type: 'memory',
            enablePaging: true,
            reader: 'array'
        }
    },
    requires: ['Mymodel.model.settingModel'],
    model: 'Mymodel.model.settingModel',
    pageSize: 10
});

Для загрузки данных используйте этот код:

store.getProxy().setData(data);
store.read();

Пример: http://jsfiddle.net/z2x074n0/3/

person Krzysztof    schedule 21.09.2014
comment
У меня есть вопрос. Если я хочу добиться того же, динамически добавляя столбец и его данные с помощью grid.reconfigure(), как это сделано выше, как я могу это сделать? - person ASR; 24.09.2014
comment
Я имел в виду, предположим, что столбцы сетки и поля модели должны быть добавлены динамически с помощью grid.reconfigure(), как можно достичь пейджинга - person ASR; 24.09.2014