Проблем с пейджинг на ExtJS с ArrayStore

Изпробвам няколко неща в ExtJS, включително показване на мрежа с различни функционалности.

В моята страница първо декларирам Javascript масив от около сто данни, които съхранявам в променлива, наречена myArray

След това правя следното:

Ext.define('Fund2',{
extend:'Ext.data.Model',
fields:[{name:'Id'},
{name:'Id2'},
{name:'Name'},
{name:'Name2'},
{name:'Name3'},
{name:'Name4'},
{name:'Param1'},
{name:'Param2'},
{name:'Param3'}]
});

var myStore2=Ext.create('Ext.data.ArrayStore',{
model:'Fund2',
data:myArray,
pageSize:10
});

Ext.create('Ext.grid.Panel',{
renderTo:'div2',
store:myStore2,
height:500,
width:500,
columns:[{text:'Id',dataIndex:'Id'},
{text:'Name',dataIndex:'Name'},
{text:'Additional',dataIndex:'Param1'}],
dockedItems:[{
xtype: 'pagingtoolbar',
store:myStore2,
dock: 'bottom',
displayInfo: true
}]
});

На тази страница панелът с мрежата се показва правилно и се попълва с данните.

Лентата с инструменти за страниране също е налична и изчислява точното количество страници.

Данните обаче не са "страницирани"; всички записи се показват в мрежата.

Знаете ли къде сгреших?


person SRKX    schedule 19.08.2011    source източник
comment
Как пейджирате данните? Споменахте, че без пейджинг всички записи се показват?   -  person Unknown    schedule 19.08.2011
comment
Според документацията на Sencha не е нужно да правите нищо повече от това да прикачите лентата с инструменти за страниране към магазина и да зададете размера на страницата на магазина. (docs.sencha.com/ext-js/4-0 /#/guide/grid)   -  person SRKX    schedule 19.08.2011


Отговори (2)


Добави Това:

myStore2.on('load', function(store, records, successful, operation) {
            this.loadData(myArray.slice((this.currentPage-1)*PAGE_SIZE, (this.currentPage)*PAGE_SIZE));
        },myStore2);

Пълна версия:

Ext.onReady(function(){
    var myArray=[];
    for (var i=0; i<100; i++) {
        myArray[i] = ['Id_'+i,'Id2_'+i,'Name_'+i,'Name2_'+i,'Name3_'+i,'Name4_'+i,'Param1_'+i,'Param2_'+i,'Param3_'+i];
    }
    var PAGE_SIZE = 10;

    Ext.define('Fund2',{
        extend:'Ext.data.Model',
        fields:[{name:'Id'},{name:'Id2'},{name:'Name'},{name:'Name2'},{name:'Name3'},{name:'Name4'},{name:'Param1'},{name:'Param2'},{name:'Param3'}]});

    var myStore2=Ext.create('Ext.data.ArrayStore',{
        model:'Fund2',
        data:myArray,
        pageSize:PAGE_SIZE
    });

    myStore2.on('load', function(store, records, successful, operation) {
        this.loadData(myArray.slice((this.currentPage-1)*PAGE_SIZE, (this.currentPage)*PAGE_SIZE));
    },myStore2);

    myStore2.load();

    Ext.create('Ext.grid.Panel',{
        renderTo:Ext.getBody(),
        store:myStore2,
        height:500,
        width:500,
        columns:[{text:'Id',dataIndex:'Id'},
                 {text:'Name',dataIndex:'Name'},
                 {text:'Additional',dataIndex:'Param1'}],
        dockedItems:[{
            xtype: 'pagingtoolbar',
            store:myStore2,dock: 'bottom',
            displayInfo: true
        }]
    });
});
person Xupypr MV    schedule 19.08.2011

реших подобен проблем с помощта на Ext .ux.data.PagingMemoryProxy

което работи доста добре
имайте предвид, че не е в стандартната компилация на ExtJS 4, трябва да го включите ръчно

person martyglaubitz    schedule 03.04.2012