2013-07-11 4 views
1

Par ajax les données d'appel récupérées à partir du serveur, mais le problème est que la réponse doit être chargée dans jqgrid mais pas de chargement. In var dataAjax = jData.responseText; dataAjax a reçu des données du serveur.Comment charger les données json par appel ajax dans jqgrid

Ce qui ne va pas avec cela. S'il vous plaît aider

$(document).ready(function(){ 

    var resData = ""; 
    $(".btnLoad").click((function(){ 
     resData = $.ajax({ 
       type : "POST", 
       url: "/AccountUI/DataFlow/AccountDetails.html", 
       dataType: "json", 
       success: functioin(jData){ 
        var dataAjax = jData.responseText;   
        return dataAjax; 
       } 

      }); 
    }); 

    var gridData = new Array(); 
    gridData = resData;  
    jQuery("#ajgrid").jqGrid({ 
      datatype: "json", 
      height: 250, 
      colNames:['AccID','AccName', 'AccBranch'], 
      colModel:[ {name:'AccID',index:'AccID', width:60, sorttype:"int"}, 
       {name:'AccName',index:'AccName', width:90}, 
       {name:'AccBranch',index:'AccBranch', width:100}    
      ], 
      multiselect : true, 
      caption : "Account Grid" 
    }); 


    for(var i=0;i<=gridData.length;i++) 
     jQuery("#ajgrid").jqGrid('addRowData',i+1,gridData[i]); 

}); 
+0

Dans le rappel ajax vous renvoyez simplement vos données à nulle part. – Tommi

Répondre

1

Il ya un malentendu ce que signifie datatype: "json". Il fonctionne avec l'option url. jqGrid fait une demande Ajax pour vous et rempli retourné à partir des données du serveur dans la grille. Si vous n'avez pas implémenté pagination côté serveur, vous devez également ajouter l'option loadonce: true à la grille.

Donc j'espère que ce dont vous avez besoin est: 1) supprimer manuel $.ajax appel; 2) enlever la boucle où vous remplissez la grille en utilisant addRowData; 3) ajouter les options suivantes à jqGrid:

url: "/AccountUI/DataFlow/AccountDetails.html", 
mtype: "POST", 
loadonce: true, 
gridview: true, 
autoencode: true 

Je vous recommande en outre de remplacer height: 250 à height: "auto". Selon le format exact des données renvoyées, vous pouvez ajouter jsonReader aux propriétés qui aident jqGrid à interpréter correctement la réponse du serveur. Probablement que jqGrid pourrait détecter automatiquement le format des données renvoyées.

Questions connexes