2010-02-03 8 views
2

J'ai un GridView qui (dans un cas particulier) contiendrait environ 5000 lignes, chaque ligne contenant un DropDownList avec environ 5000 éléments. Naturellement, cela prend une éternité à charger et jette et exception OutOfMemory sur ma boîte.ASP.NET GridView 'Page non trouvée' sur PostBack

Pas grave, je pensais. Je vais juste activer la pagination. Eh bien, cela fonctionne bien (pour la même grille) quand il est lié à d'autres données, mais quand je le lie à cette DataSource particulière (celle avec 5000 lignes) des problèmes surviennent.

Lorsque je charge le GridView pour la première fois avec le DataSet incriminé, la première page s'affiche correctement. Toutefois, lorsque je clique pour afficher la page deux, j'obtiens l'erreur:

Error 101 (net::ERR_CONNECTION_RESET): Unknown error.

Dans Google Chrome.

Et l'erreur:

Internet Explorer cannot display the webpage 

Dans IE.

Toutes les réflexions sur les raisons de cette situation seraient grandement appréciées.

Répondre

4

C'est probablement juste un problème de délai d'attente. Cela prend beaucoup plus de temps sur la publication parce qu'il doit traiter ViewState ... ce qui sera absolument énorme.

Comme d'autres l'ont dit, votre implémentation nécessite une nouvelle réflexion.

Ces options sont-elles organisées par ordre alphabétique? Si oui, qu'en est-il d'une saisie semi-automatique assez simple? Tapez deux lettres et obtenez une liste d'options disponibles qui commencent par ces deux lettres. La bibliothèque de Yahoo a une mise en œuvre décente de cela.

Si vous avez absolument besoin de 5000 options dans une liste déroulante ... déplacez cette liste déroulante en dehors de GridView pour qu'elle n'apparaisse pas sur chaque ligne. Fondamentalement, l'utilisateur va sélectionner une ligne, puis utiliser cette seule liste déroulante "maître" pour sélectionner les données. Vous pourriez probablement même jeter dans un hack javascript qui a déplacé le menu déroulant dans la ligne de sélection afin qu'il apparaît la liste déroulante est dans chaque ligne, mais il n'y a vraiment qu'un seul.

+0

Idée super utile. Merci! – user265312

2

Regardez dans l'afficheur d'événements où IIS est en cours d'exécution et vous verrez toutes les erreurs ASP.NET non gérées.

ne semble pas aussi un menu déroulant avec 5000+ entrées comme un choix optimal pour un contrôle ...

+0

+1 lorsque le projecteur affiche un utilisateur beaucoup de données jamais pratiques ... ou ... – Achilles

+0

Convenu performants, vous devriez regarder dans externalisant que la liste déroulante (du gridview) en quelque sorte. –

+0

L'idée derrière le projet est qu'un client a deux lignes ou produits et chaque produit a environ 10 attributs. Cet attribut particulier prend environ 5000 valeurs et il veut pouvoir mapper l'attribut X avec la valeur A (sur 5000) dans la première ligne à l'attribut X avec la valeur B (sur 5000) dans la deuxième ligne. Je suis certainement ouvert aux idées sur un meilleur contrôle de la configuration serait. Parce que je ne suis pas vraiment ravi de celui-ci pour commencer. – user265312

0

Au lieu de récupérer les 5000 lignes récupérer uniquement celles que vous montrerez sur la page.

Also a drop down with 5000+ entries doesn't seem like an optimal choice for a control...

+1