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

Servlets/JSP Java Discussion :

Objectif de la pagination


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut Objectif de la pagination
    Bonjour,

    je réalise une application web dans laquelle j'ai besoin d'effectuer de la pagination (résultat issu d'une bdd de plus de 1000 lignes à afficher).

    Pour être affiché, ce résultat est d'abord chargé en mémoire côté client (tableau javascript). Puis, à partir de celui-ci est généré un tableau html un peu spécifique permettant des effets intéressants pour l'utilisateur (afficher les résultats par catégorie, trier par ordre croissant ou décroissant,...).

    Pour l'instant, je ne travaille qu'avec quelques dizaines de lignes de résultat donc tout va bien mais il me faut anticiper la quantité d'information qu'il y aura à afficher par la suite. Je souhaite donc faire de la pagination. J'ai néanmoins une question à ce sujet : quel est l'objectif réel de la pagination ?

    Est - ce de minimiser la taille du ou des tableaux stockés en mémoire côté client (autrement dit réduire la taille de mon tableau javascript utilisé pour l'affichage en le scindant en plusieurs morceaux) ?

    ou

    Est - ce uniquement de réduire le nombre de lignes affichées à l'écran (c'est à dire réduire la taille du tableau html généré à partir de mon tableau javascript) ?

    ou bien les 2 ?

    Quoiqu'il en soit merci pour votre aide,

    Helio.

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Je dirais surtout 2 mais aussi 1...

    Tu peux également te tourner vers AJAX, qui évitera d'avoir 1000 lignes envoyées au client alors que 20 (par exemple) seulement seront affichées...
    Tout dépend du niveau de traitement côté client et du temps de latence admissible entre 2 pages ou lors du filtre

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Merci OButterlin pour ta réponse, c'est bien ce que je craignais...

    En réalité, à partir de l'ensemble de mes résultats, j'ai un module de recherche qui agit comme un filtre : tout se passe coté client. L'utilisateur entre un mot clé et seul les résultats concerné restent afficher (javascript).

    Or en utilisant la pagination mon tableau client contenant les données issues du serveur est scindé. Le filtre ne marche donc plus que sur les résultats alors affichés à l'écran...pas très efficace comme recherche.

    L'idée serait donc de permettre à cette recherche de fonctionner sur l'ensemble des lignes de résultats malgré le fait qu'il n'y en ait qu'un certains nombre d'afficher à la fois...

    Je crains que je vais devoir repasser par le serveur, que ce soit par un post ou par une requête AJAX...

    ++

    Helio

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Heliodromel Voir le message
    Je crains que je vais devoir repasser par le serveur, que ce soit par un post ou par une requête AJAX...
    Ce n'est pas forcément la solution la plus lente...

    Tu peux créer un objet javascript représentant ton enregistrement à afficher et charger un tableau par code (DOM).
    Là, tu fais tout localement et tu n'affiche que N enregistrements à la fois.

    Ça pourrait ressembler à ceci (ce n'est qu'un fragment)
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <html>
    <head>
    ...
    <script>
    function DBRecord(col1, col2, col3, ..., colN)
    {
       this.col1 = col1;
       this.col2 = col2;
    ...
    }
     
    var list = new Array();
    <%
       List<MonObjet> list = request.getAttribute("maListe");
       Iterator it = list.iterator();
       while (it.hasNext())
       {
          MonObjet obj = (MonObjet)it.next();
          out.println("list[list.length] = new DBRecord(\"" + obj.getCol1() + "\", \"" + obj.getCol2() ... + "\");");
       }
    %>
     
    var leTableau = "<table>";
     
    // ici il faut générer la ligne d'en-tête de colonne...
     
    for (var i = 0; i < list.length && i < 20; i++)
    {
        leTableau += "<tr>";
            leTableau += "<td>" + list[i].col1 + "</td>";
            leTableau += "<td>" + list[i].col2 + "</td>";
            ...
            leTableau += "<td>" + list[i].colN + "</td>";
        leTableau += "</tr>";
    }
    leTableau += "</table>";
     
    document.getElementById("maListe").innerHTML = leTableau;
    </script>
    ...
    </head>
     
    <body>
     
    <div id="maListe"></div>
     
    </body>
    </html>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 23
    Par défaut
    Effectivement, je vais essayer cette solution. Ma seule crainte concerne la rapidité d'execution. Bien que l'on affiche qu'un nombre de lignes limitées, le tableau coté client sera assez volumineux.

    Je vais essayer et je verrais ce que ca donne. Si c'est trop lourd, je repasserai par le serveur mais je perçois déjà des difficultés d'implémentation de cette fonction recherche côté serveur. Bon je verrai...

    Merci encore pour ton aide,

    Helio.

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

Discussions similaires

  1. Pagination : numéroter sous la forme (1/4)
    Par audreyb dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 01/03/2013, 11h59
  2. [VB.NET] Pagination DataGrid (où est l'erreur?)
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/10/2004, 11h46
  3. [C#] Probleme de pagination dans datagrid
    Par asphareth dans le forum ASP.NET
    Réponses: 2
    Dernier message: 21/07/2004, 11h25
  4. [VB.NET] Pagination DataGrid
    Par sehing dans le forum ASP.NET
    Réponses: 5
    Dernier message: 20/07/2004, 16h28
  5. Réponses: 15
    Dernier message: 20/07/2004, 09h22

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