asp.net webforms ajax mise à jour gridview

Nous avons une grid avec une assez grande quantité d’informations (100 ou lignes et colonnes) dont nous avons besoin pour améliorer la préformance.

Actuellement, pour résoudre certains problèmes de performances, nous avons fait en sorte que gridview ne soit plus édité. Double-cliquez plutôt sur une cellule pour afficher un menu déroulant des options disponibles, récupéré à l’aide de méthodes Web et renseigné à l’aide de jquery de manière dynamic définissez la valeur dans le code HTML sur la valeur de l’option sélectionnée.

Nous avons des problèmes par la suite à renvoyer ces modifications au serveur. Nous avons un bouton sur la page qui provoque une publication sur le serveur, mais les modifications apscopes via la fonctionnalité jquery ne sont pas disponibles lorsque nous parcourons les éléments gridview qu’ils ont visualisés. ont toujours les mêmes valeurs que précédemment.

Allons-nous dans le mauvais sens en termes de peuplement / mise à jour, comment pouvons-nous y parvenir?

A part: Je sais que nous devrions probablement limiter les limites de la grid, mais pour le moment ce n’est pas une option

Lorsque vous travaillez avec GridView en mode natif, c’est-à-dire que vous le laissez gérer le modèle de modification, ViewState entre dans la scène et fonctionne parfaitement. Mais lorsque vous manipulez la grid manuellement, aucun changement n’est répercuté aux emplacements associés, ce qui donne les mêmes valeurs sur le serveur. Vous avez dit que vous récupériez des valeurs sur dblclick via jQuery. Pourquoi ne mettez-vous pas à jour la ligne sur le flou? Je veux dire, lorsque l’utilisateur passe à la rangée suivante, il suffit de mettre à jour l’enregistrement actuel via Ajax. C’est l’approche la plus sûre. Une fois, j’ai eu la même expérience avec RadTree de Telerik. Vous devriez:

  1. Utilisez l’API côté client fournie pour vos contrôles, ou
  2. Ne jouez pas avec la manière native de votre contrôle, en attendant que PostBack fonctionne, ou
  3. Utilisez les commandes uniquement pour l’affichage, mais pour la manipulation, utilisez AJAX.

Si vous souhaitez améliorer les performances, vous ne devez pas utiliser.

  1. UpdatePanel
  2. ScriptManager
  3. GridView

Je suppose que vous utilisez tout cela.

Vous pouvez utiliser jQuery pour appeler directement des méthodes de page ASP.NET AJAX , sans utiliser ScriptManager. Combinez cela avec la puissance de l’une des recommandations de jQuery Grid ( ici et ici ). Je suis à l’aise avec DataTables mais j’entends de plus en plus parler de SlickGrid . Tu devrais essayer.

Maintenant que tout est du côté client, il n’y aura plus de problème de perte de valeur lors de la publication.

De plus, je vous recommande fortement de ne pas utiliser UpdatePanel du tout . Mais c’est juste moi.

Je pense que la question est sur post-back il recharger les données de l’état d’affichage. Nous avons utilisé une méthode Web pour charger des éléments dans une boîte de dialog JQuery et effectuer la mise à jour via cette méthode. Et après une sauvegarde réussie, a mis à jour la grid pour refléter les changements.

J’ai trouvé ce code “framework” http://www.codeproject.com/KB/ajax/AJAXWasHere-Part1.aspx , il modifie / recrée le ViewState et le soumet avec la demande AJAX afin que vous puissiez toujours utiliser le modèle d’événement en ASP .NET. C’était une solution AJAX avant la publication par MS de leur propre .NET 2.0.

Je l’utilise en conjonction avec la bibliothèque mootools JS, vous ne devriez donc pas avoir de problèmes à l’utiliser avec JQuery, mais vous ne pourrez pas utiliser les méthodes JQuery AJAX à moins de réécrire le “CallBackObject” en tant que plug-in Jquery.

Cordialement