IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ext JS / Sencha Discussion :

Pagination dans une grille


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut Pagination dans une grille
    Bonjour,

    Le soucis est le suivant. J'ai une grille qui doit afficher une liste de valeur (donnée sous la forme d'un tableau : [['obj 1 col 1','obj 1 col 2'],['obj 2 col 1', etc.). Tout fonctionne nickel.

    Par contre, lorsque je veux utiliser la pagination pour ma grille (pour afficher les résultats par tranche de 10 par exemple), la première page s'affiche sans problème, mais je n'arrive pas à afficher les autres. Quelqu'un saurait-il comment faire ?

    Autre petite question en passant : est-il possible de faire en sorte qu'une grille s'adapte au contenu, en terme de hauteur (height), comme c'est le cas de base pour la largeur (width) ?

    Merci.

    Mako

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Par défaut
    Bonjour!

    Tu peux nous montrer ton code stp?

    Pour ce qui concerne la hauteur, je pense que [ autoHeight: true, ] va résoudre le problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    //..
        title: 'My Grid',
        width: 400,
        height: 250,
        autoHeight: true,
        initComponent: function() {
            this.columns = [
                {
    //....

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    Citation Envoyé par Mako 5013 Voir le message
    Bonjour,

    Le soucis est le suivant. J'ai une grille qui doit afficher une liste de valeur (donnée sous la forme d'un tableau : [['obj 1 col 1','obj 1 col 2'],['obj 2 col 1', etc.). Tout fonctionne nickel.

    Par contre, lorsque je veux utiliser la pagination pour ma grille (pour afficher les résultats par tranche de 10 par exemple), la première page s'affiche sans problème, mais je n'arrive pas à afficher les autres. Quelqu'un saurait-il comment faire ?

    Autre petite question en passant : est-il possible de faire en sorte qu'une grille s'adapte au contenu, en terme de hauteur (height), comme c'est le cas de base pour la largeur (width) ?

    Merci.

    Mako
    pour ta première question il faudrait que tu montres ton code ... pour trouver ton erreur ...

    concernant la deuxième, (j'ai pas tres bien compris, mais) si tu veux faire une adaptation de la hauteur de ta cellule de ton tableau à son contenu, je pense que tu dois rajouter des baise html, comme <p>mon contenu</p>.
    Il me semble que le contenu est tronqué par défaut, car il n y a pas de balise...
    il faudra alors rajouter l'attribut renderer dans ton objet column de ta grid.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Voici le code pour la pagination :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    var listeResultat; //  Liste de résultat sous forme de tableau initialisée correctement 
    var store = new Ext.data.ArrayStore({
         fields: [
              { name: 'labelId', type: 'float' },
              { name: 'labelCompleteName', type: 'string' },
              { name: 'labelPostCode', type: 'float' },
              { name: 'labelLoc', type: 'string' },
              { name: 'labelType', type: 'string' },
              { name: 'labelName', type: 'string' },
              { name: 'labelManager', type: 'string' },
              { name: 'labelStrNum', type: 'float' }
         ],
         data: listeResultat
    });
    // On cree notre grille avec les bonnes donnees dedans
    var grid = new Ext.grid.GridPanel({
         autoExpandColumn: 'labelCompleteName',
         height: 300, // J'aimerais me passer de passer la hauteur en 'dur'
         enableColumnResize: false,
         store: store,
         columns: [
              {id:'labelId', header: "<bean:message key="label.id"/>", sortable: true, dataIndex:'labelId'},
              {id:'labelCompleteName', header: "<bean:message key="label.name.complete"/>", sortable: true, dataIndex:'labelCompleteName'},
              {id:'labelPostCode', header: "<bean:message key="label.post.code"/>", sortable: true, dataIndex:'labelPostCode'},
              {id:'labelLoc', header: "<bean:message key="label.locality"/>", sortable: true, dataIndex:'labelLoc'},
              {id:'labelType', header: "<bean:message key="label.type"/>", sortable: true, dataIndex:'labelType'},
              {id:'labelName', header: "<bean:message key="label.name.original"/>", sortable: true, dataIndex:'labelName'},
              {id:'labelManager', header: "<bean:message key="label.manager"/>", sortable: true, dataIndex:'labelManager'},
              {id:'labelStrNum', header: "<bean:message key="label.count.streetnum"/>", sortable: true, dataIndex:'labelStrNum'}
                   ],
         bbar: new Ext.PagingToolbar({
              pageSize: 10,
              store: store,
               displayInfo: true,
               displayMsg: 'Résultats {0} - {1} sur {2}',
               emptyMsg: 'Pas de résultat'
         })
    });
    Concernant le second problème, ce que je veux, c'est que la taille de ma grille s'adapte au nombre de résultats à afficher. Si par exemple je veux avoir 25 résultats par pages, mais que je n'en ai que 10 à afficher, je ne veux pas avoir "de la place vide" pour les 15 dernières lignes. Dans l'idée, je pensais que "autoHeight" répondrait à mes attentes, mais cela ne fonctionne pas. Si je le mets à true, et que je mets par la suite height: 'auto', ma grille fait une ligne de hauteur...

    @takitano :
    J'avoue ne pas trop saisir ta proposition...Adaptée au code ci-dessus, cela donnerait quoi ?

    Merci.

    Mako

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    ok ... oublie ce que j'ai dit hier ...

    j'ai mal compris ...

    en fait pour arriver a tes fins, tu dois:
    dans l'objet parent de ton grid, tu dois mettre l'attribut:
    et dans ton grid, tu mes
    tu mes

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 267
    Par défaut
    Concernant ta pagination,

    tu dois utiliser l'attribut reader dans ton store (de type Store, et non ArrayStore ...)

  7. #7
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2010
    Messages : 394
    Par défaut
    Pour la pagination, il me dit à présent que "this.proxy is null or not an object"; et je ne vois pas trop quoi lui donner comme proxy...En effet, je récupère mes valeurs comme ceci (en initialisant le tout dans l'action Struts associée à ma jsp) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var listeResultat = <%=session.getAttribute("listeResultatExtJS")%>;
    En outre, je viens de m'apercevoir que le problème est légèrement plus complexe, puisqu'il m'affiche correctement le nombre de pages (par exemple, 2 dans le cas de 15 résultats avec pageSize: 10), mais concrètement, tous mes résultats sont tout de même affichés directement sur la première page (avec une scroll barre si besoin est).

    Pour le second problème, j'ai fait comme tu m'as dit, avec le layout:column dans l'objet parent de la grille. Par contre, pour le columnWidth de la grille, d'une part cela ne fonctionne pas, et d'autre part, ce n'est pas un attribut décrit dans l'API...Enfin, ce ne serait pas plutôt sur le height qu'il faudrait jouer ? Parce que pour le width, je n'ai pas de problème...

    Mako

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pagination dans une grille AJAX
    Par Mako 5013 dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 14/06/2010, 10h54
  2. Réponses: 3
    Dernier message: 16/10/2006, 11h06
  3. Classer des rectangles dans une grille régulière
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 16/09/2006, 13h38
  4. Fuison de cellule dans une grille
    Par AlexB59 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 21/11/2005, 16h25
  5. Réponses: 10
    Dernier message: 19/09/2005, 22h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo