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 :

Lazy loading Panel grid ExtJs 4.2.2


Sujet :

Ext JS / Sencha

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut Lazy loading Panel grid ExtJs 4.2.2
    Bonjour a tous,

    Je veux arrive a chargé mes données par batche de 20 dans une Gride avec des pagination ?

    Je me suis fait mon exemple avec ça : http://docs.sencha.com/extjs/4.2.2/#...toolbar.Paging
    Mais ça ne fonctionne pas bine puisque il me charge toujours tout mes donnes sur une seul page même sur la tools bar affiche "Displaying 1-20 of 20869" ? y t'il des exemples simple ou des chose que je dois faire avant ?

    Merci
    ci-joint mon projet extjs.zip

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    dans extjs la pagination ne fait que préparer l'interface utilisateur et passer les paramètre dans la requête au serveur

    dans tous les cas le widget affiche l'intégralité des données qu'il reçois du serveur.
    c'est au serveur de fournir une réponse contenant la page de donnée demandée. c'est pour cette raison qu'extjs envois les paramètres de pagination au serveur.

    on pourrait penser que c'est le client qui assure la pagination. Mais la pagination est faite pour minimiser les échanges entre le client et le serveur.
    si c'est le client qui doit paginer on ne minimise rien. de plus aucun navigateur n'est capable de mettre en mémoire (RAM) 100 000 000 lignes
    Alors que 1 000 000 de fois 100 ligne ne pose pas de problème.

    imagine que tu navigue dans ton appli depuis un smartphone. si pour afficher les 10 première ligne d'une grid tu devait charger dans la mémoire du smartphone 100 000 000 de ligne les découper en packet de 10 sur le smartphone un tu en prendrait pour des plombes avec le réseau. deux la mémoire du smartphone serait saturée.

    avec ExtJS il faut penser qu'on a en fait deux appli
    un client et un serveur
    le client sait géré peut de données les présenter de façon sophistiquée et interagir avec l'utilisateur.
    le serveur sait géré beaucoup de données, et sait faire des traitement complexe et/ou de masse.
    les deux communique via http


    A+JYT

  3. #3
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    c'est pour cette raison qu'extjs envois les paramètres de pagination au serveur.
    OK, comment il est possible d'envoyer les paramètres de pagination au serveur ? (c'est quoi qui permet d'activer cette fonctionnalité)


    Aussi dans le code plus haut : j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        // allow the grid to interact with the paging scroller by buffering
        buffered: true,
        leadingBufferZone: 50,    
        pageSize: 50,
        purgePageCount: 0,
    Puis j'ai l'erreur suivant :
    Uncaught TypeError: Cannot read property 'length' of undefined dans "ext-all-debug.js:98849" sur la ligne "if (records.length < 1) {"


    NB: je suis avec Extjs 4.2.2.


    Merci

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    il te faut lire la doc
    je te conseille le tuto MVC

    lorsque ExtJS envois la requête Ajax celle-ci contient toutes les information nécessaire au serveur pour récupérer la page de donnée.

    en retour il attends un objet JSON dont la structure est précisée dans la doc.
    cet objet contient plusieurs champs
    le nombre total d'éléments
    le nombre d'élément dans la page retournée
    un tableau des éléments de la page
    un attribut success qui doit être à true si le serveur à réussi à false sinon

    tout cela est précisé dans la doc.
    A+JYT

  5. #5
    Membre éprouvé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Par défaut
    Je ne trouve pas d'exemple ou de doc qui parle de ce cas précis dons tu parle, tu peu m'envoyé le lien ?

    Merci d’avance

    NB: y a cette exemple la mais dans leurs code y pas de notion de limite de pagination (je ne la voix pas):
    https://github.com/loiane/extjs4-mvc-paging-grid

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 46
    Par défaut
    Je vois qu tu utilises bien les paramètres de pagination dans ton fichier application/store/Transfo.js:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    params:{
        start:0,
        limit: 20
    }
    Donc ton problème dois venir de PHP (dont tu ne fournis pas la source dans ton ZIP):
    Voici un exemple de ce que tu dois gérer dans ton script PHP (code simplifié pour facilité la compréhension)
    Code php : 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
    <?php
    $start = 0; // valeur par défaut
    $limit = 25; // valeur par défaut
    if (isset($_REQUEST['start']) && is_numeric($_REQUEST['start'])) $start = $_REQUEST['start'];
    if (isset($_REQUEST['limit']) && is_numeric($_REQUEST['limit'])) $limit = $_REQUEST['limit'];
     
    // construction de ta requête avec les valeurs de pagination
    $sql = '
    SELECT     [yourfields]
    FROM       [yourtable]
    WHERE      [youroptions]
    ORDER BY  [yourorders]
    LIMIT     '.$start.','.$limit;
     
     
    $result = $db->query($sql) or log_error_db(__FILE__, __LINE__, $db->error());
     
    header('Content-Type: text/javascript');
    echo $json->encode($db->fetch_assoc($result));
     
    ?>

Discussions similaires

  1. spring2 hibernate3 : lazy loading
    Par fxonline dans le forum Hibernate
    Réponses: 9
    Dernier message: 10/02/2007, 18h56
  2. Lazy loading sur component
    Par El Saigneur dans le forum Hibernate
    Réponses: 2
    Dernier message: 03/11/2006, 10h30
  3. Lazy loading et fermeture de session hibernate
    Par BRAUKRIS dans le forum Hibernate
    Réponses: 3
    Dernier message: 20/07/2006, 13h08
  4. [hibernate] problème pour desactiver le lazy loading
    Par agougeon dans le forum Hibernate
    Réponses: 2
    Dernier message: 14/03/2006, 11h20
  5. [HIBERNATE 3]Lazy loading
    Par SEMPERE Benjamin dans le forum Hibernate
    Réponses: 11
    Dernier message: 08/02/2006, 22h40

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