2010-12-13 33 views
1

J'ai un GridView qui affiche plus de 30000 lignes, et les utilisateurs doivent pouvoir modifier un 'drapeau' (case à cocher) et une 'raison' (zone de texte) pour chaque ligne. J'ai pensé à 2 façons de le faire:Commandes GridView sur un grand ensemble de données

1: Postback chaque fois que la case est cochée, et enregistrer la raison et le drapeau sur la ligne individuelle - rapide si seulement en éditant une rangée, mais devient fastidieuse lorsque les drapeaux devaient être modifié pour plusieurs lignes car la page doit être publiée à chaque fois, ce qui redéfinit ainsi l'énorme grille. 2: Désactivez les publications automatiques à partir de la case à cocher et ne mettez à jour la table que lorsque vous appuyez sur un bouton de mise à jour global. Cela permet de vérifier/décocher rapidement, mais il faudrait faire défiler chaque rangée pour vérifier le statut - je ne sais pas combien de temps cela prendra et franchement je ne veux pas savoir!

Existe-t-il d'autres méthodes que je pourrais utiliser? Peut-être utiliser AJAX, mais est-il facile à utiliser pour GridViewRow?

Merci

+0

D'après ce qui précède, il semble que vous n'utilisiez pas la pagination. N'importe quelle raison? Si vous utilisez une source de données telle que LINQ, ainsi que la pagination, une reliure va uniquement tirer et lier une quantité de données équivalente à la taille de votre page. – Keith

+0

Désolé, j'utilise la pagination - mais la pagination générée automatiquement sur GridView. – Chris

Répondre

0

Il me semble que vous affichez les contrôles CheckBox/TextBox lorsque vous chargez la page pour la première fois. Si tel est le cas, vous devez absolument PAS AutoPostBack. Traitez cela comme un formulaire normal, passez à un contrôle ASP Repeater, extrayez les valeurs soumises du formulaire sur une page séparée et soumettez-les à la base de données. Rien dans votre question ne me porte à croire que vous devez briser le modèle de soumission de formulaire normal pour s'adapter à la façon dont les utilisateurs interagissent avec cette page.

Vous n'avez pas mentionné l'utilisation des boutons Modifier/Mettre à jour/Annuler, ce qui me porte à croire que vous n'utilisez pas les commandes GridView intégrées. Honnêtement, il me semble que vous essayez de faire en sorte que cette page corresponde au modèle d'un contrôle ASP préexistant alors que ce n'est pas le cas. Si j'étais vous (et que vous aviez le temps), je réécrirais cette page en utilisant un contrôle ASP Repeater et j'utiliserais jQuery pour soumettre la page via un appel AJAX à un WebMethod ASP.NET. Il y a beaucoup de jargon dans cette phrase précédente, mais une fois que vous l'avez retiré la première fois, cela va simplifier la façon dont vous écrivez vos pages. Votre commentaire dit que 30 000 était une décision d'affaires, alors j'ai enlevé la partie de ma réponse indiquant que vous aviez le choix à cet égard. Je ressens ta douleur.

0

Vous pouvez utiliser AJAX pour le faire. Si je faisais quelque chose comme ça, c'est probablement la méthode que je voudrais. Cela donnera à vos utilisateurs une expérience utilisateur agréable et vous n'aurez pas à vous soucier de faire beaucoup de traitement à la fin.

Sur une autre note, si vous avez 30 000 enregistrements, cette application va-t-elle être utile pour vos utilisateurs? Je doute que quelqu'un puisse regarder à travers 30 000 enregistrements et en tirer quelque chose d'utile ...

+0

Il est plutôt idiot d'afficher 30000 lignes, mais c'est pour un système d'entreprise où actuellement, ils ont 30000 lignes affichées. Dans le futur, ça ira bien au-dessous de 100 et je resterai comme ça ... mais on m'a dit qu'ils ont encore besoin d'éditer ces 30000 lignes dans un GridView. – Chris