2009-04-01 7 views
1

J'écris une application web interne qui est utilisée pour rechercher des vérifications de crédit. J'utilise ASP.NET pour ce site.Comment puis-je conserver les données dans ma vue grid au-delà de la publication?

J'ai une requête SQL que je dois interroger la base de données de vérification de crédit et il renvoie une donnée de résultats. Après que la personne a cliqué sur la recherche, j'exécute la requête et lie la datatable renvoyée au Gridview chaque fois que l'utilisateur clique sur le bouton de recherche.

Cela fonctionne très bien, et il remplit mon gridview comme il se doit. Comment puis-je gérer les données liées à ma vue de grille au-delà de la publication? Par exemple, disons qu'une personne clique sur la page 2 de la grille paginée ... comment puis-je éviter de perdre les données de la grille lors de cette publication?

Actuellement je stocke datatable en session [] mais je ne pense pas que je devrais faire cela, parce que la taille de ce tableau est très grand (parfois des centaines de milliers de résultats!)

Do I besoin de re-interroger la base de données pour chaque publication? La requête prend un peu décent et je préférerais ne pas pouvoir l'aider.

Quelle est la solution commune ici?

Répondre

0

Plusieurs choses:

  • En cliquant sur "Page 2" ne devrait pas résultat dans une publication - il devrait être une simple demande GET.
  • Ne pas laisser GridView de stocker ses données dans le ViewState: les données du cache manuellement et « redéfinissez » sur chaque demande datasource
  • Utiliser ASP.NET MVC
+0

S'il y a un post-retour, que se passe-t-il alors? Dites quelque chose d'autre que la pagination. –

+0

J'ai spécifiquement mentionné que _pagination_ ne devrait pas être implémenté en utilisant des postbacks. De manière générale, toute la navigation doit être implémentée en termes de requêtes GET, pas de POST ou quoi que ce soit. –

+0

Je dirais que c'est un point très discutable. – Ruslan

1

Si vous stockez les données de la session I assurez-vous que viewstate est désactivé et que vous le reliez à chaque publication, au moins vous ne stockez pas toutes ces données à 2 endroits.

Vous pouvez également envisager de laisser le viewpoint activé et de modifier la logique qui saisit les données de session pour ramener une page de données à la fois? Vous devez prendre la page en cours et retourner les données de cette page pour que vous puissiez obtenir toutes les données au début et les stocker dans la session. Ensuite, si d'autres actions de publication se sont produites au cours de cette page, où rien ne se passait réellement avec la grille, vous n'auriez pas besoin de relier à chaque fois. J'ai découvert que la plupart des problèmes que j'ai rencontrés dans le passé en raison de l'affichage d'un trop grand nombre de données dans une grille posaient plus de problèmes de conception et que je prenais du recul et examinais le problème global qui devait être résolu et implémenter une autre solution pour ne pas avoir à afficher autant de données. Habituellement, un client/utilisateur demande tout parce qu'il ne considère aucune alternative ou l'impact de sa demande.

Questions connexes