2009-07-09 6 views
1

J'utilise un Gridview pour stocker des enregistrements que l'utilisateur peut cliquer sur la case à cocher dans chaque enregistrement pour indiquer qu'il/elle veut enregistrer cet enregistrement (après avoir édité les données) et l'utilisateur peut sélectionner autant de enregistre comme ils veulent et les enregistre tous à la fois.ASP.net GridView's ViewStates

Dans le code qui suit, je vais boucler la grille et chercher la case à cocher pour enregistrer l'enregistrement. Si je désactive l'état d'affichage de Gridview. Je ne peux pas le faire en boucle mais si j'ai activé viewstate de gridview, alors l'état d'affichage gridview peut aller jusqu'à 1mb et au-delà. Quel sera le meilleur moyen de réduire l'état de view sur ce contrôle girdview ou est-ce que mon approche est fausse?

+1

Pouvez-vous poster un exemple de la façon dont vous utilisez votre GridView, peut-être comment vous êtes lié à o? – RichardOD

Répondre

1

Si vous ne pouvez pas réduire la taille de votre viewstate, vous pouvez essayer une autre solution. Vous pouvez stocker votre viewstate sur le serveur. Ce blog montre comment implémenter ceci:

Reducing the page size by storing ViewState on Server

J'ai mis en place quelque chose de semblable à cela sur une page qui a eu un énorme viewstate et il a très bien fonctionné. J'essaierais d'optimiser le viewstate avant de passer à quelque chose comme ça car cela crée un peu de surcharge.

Je pense que j'utilisé cet article (il a été un certain temps) et a dû le modifier pour SQL que celui-ci utilise le système de fichiers: Persisting View State to the File System

0

Je suis d'accord avec Alex. Vous pouvez également utiliser une table temporaire pour stocker les données. J'ai utilisé ce scénario sur un projet et cela fonctionne très bien. Vous pouvez également utiliser la mise en cache, mais encore une fois mettre la charge sur le serveur Web (sauf si vous avez une sorte de mise en cache distribuée).

1

Si vous êtes ouvert à l'idée, vous pouvez envisager d'implémenter la pagination personnalisée pour réduire le nombre d'enregistrements renvoyés. Peut-être commencer par la pagination par défaut mais cela retourne tous les enregistrements. Si vous voulez de meilleures performances, la pagination personnalisée est la solution.

Certains documents utiles:

  1. Efficiently Paging Through Large Amounts of Data

  2. GridView ObjectDataSource LINQ Paging and Sorting

  3. Improve GridView Performance by Delegating Paging to SQL Server