2009-04-01 7 views
1

Nous avons une page ASP.NET très lente avec un répéteur. Il est lent car la plupart du traitement est effectué dans l'événement ItemDataBound du répéteur. Tout ce traitement obtient seulement 2 totaux à afficher dans chaque rangée.Remplacement de la base de données d'éléments par des appels jquery ajax

Pour augmenter le débit, il peut être judicieux de charger le répéteur sans événement ItemDataBound et sans les 2 totaux. Au lieu de charger la page dans le navigateur, les appels AJAX peuvent être effectués à partir de chaque ligne et les totaux peuvent être affichés de manière asynchrone.

Pouvez-vous pointer vers un exemple de code où ce type de solution est atteint.

Merci!

Répondre

0

En effet l'appel jQuery.ajax() est une bonne option ici. Vous pouvez l'utiliser pour appeler un WebMethod défini dans votre codebehind

En ce qui concerne le calcul du côté serveur, vous avez un couple d'options:

  1. Intégrer les valeurs nécessaires pour préformer le calcul en HiddenFields dans chaque rangée et transmettez-les à votre webmethod via les paramètres de l'appel ajax(). Passez un ID unique pour la ligne en utilisant une méthode similaire à celle ci-dessus (HiddenField) et effectuez votre calcul en fonction de cet ID.

En ce qui concerne le code, il pourrait ressembler à ceci:

$('span.show-total').hover(
    function(){ 

     // Show panel here 

     $.ajax({ 
      type: "POST", 
      url: "PageName.aspx/MethodName", 
      data: '{"uniqueId":"' + $(this).find('input[id$=YourHiddenFieldID]').val() + '"}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       // Do something interesting here. 
       alert(msg.d); 
      } 
     }); 
    }, 
    function(){ 
     // Hide panel here 
    } 
); 
Questions connexes