4 votes

ExtJS4 - Grid Store pageSize

J'ai 10 éléments dans la grille et bien que le mécanisme de pagination soit correct, montrant 1 sur 10, 2 sur 10, etc, la grille affiche toujours les 10 éléments. J'ai également essayé de renvoyer dans le json la propriété "total" à 1 mais cela ne fonctionne toujours pas. Des idées ?

L'exemple dans la documentation n'est pas très utile non plus car il montre le code source mais l'aperçu en direct est vide.

        var photos = new Ext.data.Store({
            model: 'Photos',
            autoLoad: true,
            pageSize: 1
        });

        var photosGrid = Ext.create('Ext.grid.Panel', {
            id: 'PhotoGrid',
            store: photos,
            columns: [
                       { text: "Filename", width: 200, dataIndex: 'filename' }
                    ],
            dockedItems: [{
                xtype: 'pagingtoolbar',
                store: photos,
                dock: 'bottom',
                displayInfo: true
            }],
            region: 'center',
            border: 0,
            overCls: 'row-pointer'
        });

1voto

nscrob Points 3677

Hei, votre problème est que vous retournez probablement les 10 éléments dans votre json, la pagination doit être implémentée par vous-même, tout ce que la pagination fait est d'appeler un chargement sur le magasin avec des paramètres spécifiques comme la limite de la page et l'index de début de la page. Vous devez utiliser ces paramètres sur le backend pour envoyer un élément à la fois. Chers collègues.

EDIT

//this is the model we will be using in the store
Ext.define('Page', {
    extend: 'Ext.data.Model',
    fields: [
        {name: 'id',    type: 'int'},
    ]
});

var data = null;
var store = null;
Ext.Ajax.request({
    url: 'someurl',
    success: function(result){
        data = Ext.decode(result.responseText);
        store = Ext.create('Ext.data.Store', {
            autoLoad: true,
            model: 'Page',
            pageSize: 1,
            data : data,
            proxy: {
                type: 'memory',
                reader: {
                  type: 'json',
                  root: 'pages'//this has to be as the root from your json
                }
            }
        }); 
    }
});

0voto

Imad Moqaddem Points 1323

C'est un problème de requête dans votre script qui formate le json. Lorsque vous utilisez extjs avec pageSize, il envoie des requêtes avec des paramètres ( page & limit , je m'en souviens). Dans votre script côté serveur, vous devez vérifier s'ils existent, et si c'est le cas, changer votre requête pour ajouter un limit (ou l'équivalent dans d'autres bases de données).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X