Question

J'ai quelques tables dans ma base de données avec environ 7K lignes et je dois Créez un rapport sur le site Web (asp.net) avec un formatage personnalisé, un tableau croisé dynamique similaire à celui décrit.

Quelle est la meilleure solution pour cela, car lorsque je rends, par exemple, un répéteur avec cette quantité de données, il est très lent.

Merci pour vos conseils

Était-ce utile?

La solution

Si vous ne souhaitez pas de pagination, vous aurez probablement besoin d'AJAX pour extraire les lignes lors du défilement, et éventuellement supprimer les lignes lors de leur défilement, si vous souhaitez conserver de la mémoire.

Autres conseils

Désactiver le viewstate

Sauf si vous en avez besoin

Page.EnableViewState = false;

Scinder la table

Si vous ne voulez pas emprunter la route de pagination, vous pouvez également essayer de fractionner un <table> grand en plusieurs </table> s plus petits. (Auparavant, le navigateur ne pouvait restituer une table qu'après avoir vu la version finale crap * 7000 = alot of crap. Je ne sais pas si cela reste vrai, mais cela en vaut vraiment la peine

)

Débarrassez-vous de la merde

Assurez-vous que vous utilisez css et non des choses comme

<td width="40" valign="top"> 50 </td>
<td class="a"> 50 </td> <!-- better  -->
<td>50</td> <!-- best  -->
<!-- if you need to specify a width, you only need to do it in one row  -->

Rappelez-vous <=>

Réduisez la taille de la page à tout prix

Parfois, le problème n’est pas le rendu de la page, mais c’est le téléchargement qui en est la cause, alors vérifiez-le.

Les tableaux imbriqués vous feront vraiment mal

Nuff a dit

Je suggérerais d'utiliser la radiomessagerie.

Considérant une ligne typique comme ceci:

<tr><td>ID</td><td>Some data</td><td>More and more data</td></tr>

Chaque ligne contient 66 caractères. Ainsi, 7k lignes représentent environ 500 000 données. Et c’est beaucoup pour un affichage Web.

Donc, si vous voulez vraiment tout afficher dans une page, gardez-le au minimum:

  • Ne gaspillez pas les espaces
  • N'utilisez pas d'attributs à moins que cela ne soit absolument inévitable
  • N'utilisez pas class = " " si vous ne disposez pas de classes différentes pour des lignes différentes (appliquez la même classe à toutes les lignes)

Quoi qu'il en soit, en fonction de l'ordinateur cible + du navigateur, cela pourrait devenir très lent si vos lignes étaient plus grandes.

Vous ne mentionnez pas la langue que vous utilisez, mais la mention d'un répéteur suggère ASP.Net? D'après mon expérience, la liaison de données à un DataGrid est plus rapide sur des ensembles de données plus volumineux.

MAIS, je me demande pourquoi vous voudriez afficher autant de données sur une page Web. Aucun utilisateur sensé ne pourrait s'asseoir et faire défiler autant de données et le trouver utile. Limitez vos données aux données pertinentes qui seront utiles à l'utilisateur - généralement filtrées à moins de 100 lignes.

IMO, un rapport contenant autant de données est inutile, quel que soit le format, mais si vous devez absolument disposer de tout pour un rapport imprimé, envisagez de générer un document PDF sur le serveur.

Peut-être voudrez-vous essayer un outil de reporting personnalisé pour autant de données. Ma société fabrique un outil appelé RSinteract (fiche éhontée). Qui utilise les services de génération de rapports SQL Server.

Si vous souhaitez simplement vider les données. Je suppose que le navigateur se bloque pendant le rendu ou pendant que la requête est en cours d'exécution. Si vous connaissez votre navigateur cible, vous pouvez utiliser un & Quot; Plus ... & Quot; lien pour obtenir le prochain ensemble de données et avoir une limite de 1000 lignes. Cependant, cela aurait un impact sur la recherche Ctrl + F. Semblable à la pagination mais en mettant la responsabilité entre les mains de l’utilisateur, je suppose.

Si vous recherchez vraiment le & "meilleur &"; solution pour une & "application Web &"; je vous suggérerais de manière flagrante d’utiliser Flash / Flex pour le rendu efficace de autant de lignes. Si vous ne souhaitez pas utiliser autre chose que du HTML de base, je vous suggère d'extraire de manière dynamique les nouvelles lignes au fur et à mesure que l'utilisateur fait défiler comme @mbeckish le suggère ...

J'ai utilisé les grilles Dev Express pour un client pour traiter les rapports et ils adorent ça (bien que j'aurais préféré rouler le mien!)

Voir http://demos.devexpress.com/ASPxGridViewDemos/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top