2010-04-10 15 views
2

J'ai un cas où je dois mettre à jour un jqgrid en fonction de certains critères de recherche que l'utilisateur sélectionne. Je peux obtenir les données à mettre à jour, mais je voudrais que le message de chargement s'affiche pendant que les nouvelles données sont récupérées. Quelqu'un peut-il s'il vous plaît laissez-moi savoir comment cela fonctionne?jqGrid affiche le message "loading" par défaut lors de la mise à jour d'une table/sur une mise à jour personnalisée

Code actuel suit

 

var ob_gridContents = $.ajax({ 
url : '/DisplayObAnalysisResults.action?getCustomAnalysisResults', 
data : "portfolioCategory="+ $('#portfolioCategory').val() 
+"&subPortfolioCategory="+ $('#subPortfolioCategory').val() 
+ "&subportfolio=" + $('#subportfolio').val(), 
async : false 
}).responseText; 
var ob_Grid = jQuery('#OBGrid')[0]; 
var ob_GridJsonContents = eval('(' + ob_gridContents + ')'); 
$('#ob_Grid').trigger("reloadGrid"); 
ob_Grid.addJSONData(ob_GridJsonContents); 
ob_Grid = null; 
ob_GridJsonContents = null; 
} 
 

Répondre

2

Si je comprends ce que vous corriger vous, je vous recommande d'utiliser le plugin jQuery BlockUI (http://malsup.com/jquery/block/). Ensuite, vous n'avez pas besoin de plus d'utiliser « async: false » paramètre de la fonction .ajax $ et faire quelque chose comme ce qui suit:

var WaitMsg = function() { 
    jQuery('#main').block({ message: '<h1>Die Daten werden vom Server geladen...</h1>' }); 
}; 
var StopWaiting = function() { 
    jQuery('#main').unblock(); 
}; 

WaitMsg(); 
$.ajax({url : '/DisplayObAnalysisResults.action?getCustomAnalysisResults', 
     data: jQuery.param({portfolioCategory: $('#portfolioCategory').val(), 
          subPortfolioCategory: $('#subPortfolioCategory').val(), 
          subportfolio: $('#subportfolio').val()}), 
     complete: function (data, status) { 
      if (status === "success" || status === "notmodified") { 
       var ob_GridJsonContents = jQuery.parseJSON(data.responseText); 
      ... 
      } 
      StopWaiting(); 
     }, 
     error: function (xhr, st, err) { 
      // display error information 
      StopWaiting(); 
     } 
}); 

Je vous recommande de ne pas construire des paramètres de la façon comme

"portfolioCategory =" + $ ('# portfolioCategory') .val() + "& subPortfolioCategory =" + $ ('# subPortfolioCategory') .val() + "& subportfolio =" + $ ('# subportfolio') .val()

parce que vous pouvez recevoir Si les données retournées par .val() ont des caractères spéciaux. Vous pouvez utiliser la fonction JavaScript encodeURIComponent dans de tels cas (comme encodeURIComponent ($ ('# portfolioCategory'). Val())) ou fonction jQuery.param si vous construisez une chaîne comme p1 = val1 & p2 = val2 & ... pN = valN.

Meilleures salutations
Oleg

+0

Merci Oleg, L'approche que je l'utilise est maintenant que je réinitialiser l'URL et à recharger en utilisant la méthode de déclenchement. Je vais ajouter l'appel d'encodage basé sur votre suggestion. – JVXR