225 votes

Grille de données JavaScript pour des millions de lignes

- Je besoin de présenter un grand nombre de lignes de données (ie. des millions de lignes) de l'utilisateur dans un réseau à l'aide de JavaScript.

L'utilisateur ne voit pas les pages, ou afficher seulement fini quantités de données à la fois.

Plutôt, il apparaît que toutes les données sont disponibles.

Au lieu de télécharger les données d'un coup, les petits morceaux sont téléchargés que l'utilisateur vient à eux (ie. en faisant défiler la grille).

Les lignes ne seront pas modifiés par cette extrémité avant, donc en lecture seule grilles sont acceptables.

Quelles grilles de données, écrit en JavaScript, il existe pour ce type de fluide de pagination?

190voto

Tin Points 6960

(Disclaimer: je suis l'auteur de SlickGrid)

Mise à JOUR Cela a maintenant été mis en œuvre dans SlickGrid.

Veuillez voir http://github.com/mleibman/SlickGrid/issues#issue/22 pour une discussion en cours sur la fabrication de SlickGrid travailler avec un plus grand nombre de lignes.

Le problème est que SlickGrid ne pas virtualiser la barre de défilement - à-dire la zone déroulante de la hauteur correspond à la hauteur totale de toutes les lignes. Les lignes sont ajoutés et supprimés en tant que l'utilisateur fait défiler, mais le défilement se fait par le navigateur. Qui lui permet d'être très rapide mais en douceur (onscroll événements sont notoirement lent). Le problème, c'est qu'il y a des bugs ou des limites dans les navigateurs CSS moteurs qui limite le potentiel de la hauteur d'un élément. Pour IE, qui se trouve être 0x123456 ou 1193046 pixels. Pour les autres navigateurs, il est plus élevé.

Il est expérimental, la solution de contournement dans le "largenum-fix" de la branche que soulève cette limite de manière significative par le remplissage de la zone déroulante avec "pages" mis à 1M pixels hauteur, puis en utilisant le positionnement relatif dans ces pages. Depuis la limite de hauteur dans le CSS du moteur semble être différent et nettement inférieur à celui de la disposition réelle du moteur, ce qui nous donne beaucoup plus de limite supérieure.

Je suis toujours à la recherche d'un moyen d'obtenir à un nombre illimité de lignes, sans renoncer à la performance de pointe qui SlickGrid détient actuellement sur d'autres implémentations.

Rudiger, pouvez-vous expliquer comment vous l'avez résolu?

84voto

Andras Vass Points 8021

http://wiki.github.com/mleibman/SlickGrid/

"SlickGrid utilise virtuel de rendu vous permettant de travailler facilement avec des centaines de milliers d'articles sans aucune baisse de performance. En fait, il n'y a pas de différence de performance entre les travailler avec une grille avec 10 lignes par rapport à un 100'000 lignes."

Quelques faits saillants:

  • Adaptative défilement virtuel (gérer des centaines de milliers de lignes)
  • Extrêmement rapide, la vitesse de rendu
  • Contexte de l'après-rendu pour les plus riches, les cellules
  • Configurable et personnalisable
  • Clavier complet de navigation
  • Colonne redimensionner/réorganiser/afficher/masquer
  • Colonne de redimensionnement automatique et de la force-fit
  • Enfichable cellule de formateurs et éditeurs
  • Support pour l'édition et la création de nouvelles lignes." par mleibman

Il est libre (licence MIT). Il utilise jQuery.

37voto

scripto Points 1108

Les meilleures Grilles à mon avis, sont ci-dessous:

Mes 3 meilleures options sont jqGrid, jqxGrid et les tables de données. Ils peuvent travailler avec des milliers de lignes et de support de la virtualisation.

24voto

Je ne veux pas lancer un troll, mais en supposant que votre les chercheurs de l'homme, tu ne le connais pas aussi bien que vous le pensez. Juste parce qu'ils ont des pétaoctets de données n'est pas capable de voir même des millions d'enregistrements de façon significative. Ils pourraient dire qu'ils veulent voir des millions de documents, mais c'est tout simplement ridicule. Votre plus intelligent que les chercheurs n'certaines notions de mathématiques de base: Supposons qu'ils passent 1 seconde affichage de chaque dossier. À ce rythme, il faudra 1000000 secondes, ce qui correspond à plus de six semaines (40 heures semaines avec pas de pauses pour la nourriture ou le lavabo).

Ont-ils (ou vous) pense sérieusement qu'une personne (l'un regardant la grille) peut trouver ce genre de concentration? Ils sont vraiment obtenir beaucoup fait en 1 seconde, ou sont-ils (plus probable), le filtrage des choses la ne pas vouloir? Je soupçonne qu'après l'affichage d'un "taille raisonnable" sous-ensemble, ils pourraient décrire un filtre pour vous qui serait automatiquement filtrer les enregistrements.

Comme paxdiablo et Sleeper Smith et Lasse V Karlsen aussi implicite, vous (et ils) n'ont pas pensé à toutes les exigences. Sur le côté, maintenant que vous avez trouvé SlickGrid, je suis sûr que la nécessité de ces filtres est devenu immédiatement évident.

14voto

Lasse V. Karlsen Points 148037

Je peux dire avec une assez bonne certitude que vous sérieusement n'avez pas besoin de montrer des millions de lignes de données à l'utilisateur.

Il n'y a pas d'utilisateurs dans le monde qui sera en mesure de les comprendre et de gérer cet ensemble de données de sorte que même si vous gérer techniquement de le retirer, vous n'aurez pas à résoudre tout problème connu de l'utilisateur.

À la place je me concentrerais sur le pourquoi de l'utilisateur veut voir les données. L'utilisateur ne veut pas voir les données pour afficher les données, il est généralement une question posée. Si vous vous concentrez sur de répondre à ces questions au lieu de cela, alors vous serait beaucoup plus proche de quelque chose qui résout un problème réel.

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