2012-09-05 4 views
0

J'ai un Jqgrid qui nécessite une modification. J'ai réussi à configurer la grille pour enregistrer les données après l'édition, mais le problème est que lorsque les données sont enregistrées, la grille n'est pas actualisée avec les données présentes dans la base de données. Par exemple, le champ version est automatiquement mis à jour par le backend de l'application, mais après une modification, il n'est pas actualisé et l'ancienne valeur est affichée. J'ai essayé afterSubmit afterCompleteJQGrid actualise les données avec les données mises à jour à partir du serveur ater modifier

qui ne fonctionnait pas. J'ai également placé une alerte à l'intérieur pour vérifier que la fonction a été appelée mais l'alerte n'a pas non plus été affichée. De plus, j'ai mis loadonce à false et reloadaftersubmit à true, mais cela n'a pas fonctionné non plus. Je pense que le problème pourrait être que je n'ai pas configuré l'édition correctement ou placé les paramètres mentionnés ci-dessus dans l'emplacement incorrect.

Après une sauvegarde est effectuée (modifier) ​​les données mises à jour (ce qui est la page entière) est renvoyée à la jqGrid (JSON). Le problème ici est que les anciennes données sont affichées et comment puis-je afficher ces données mises à jour après la modification.

MISE À JOUR: Je trouve que quand j'édite via la boîte de pop-up de la afterSubmit est exécutée. TOUTEFOIS, l'édition a lieu via les options de formatage qui permettent d'éditer les données dans la table elle-même. Maintenant, lorsque les données sont éditées et enregistrées à partir de la grille elle-même sans l'utilisation de la popup, je veux un afterSubmit à feu pour rafraîchir la table. Où dois-je placer mon afterSubmit/Comment puis-je y parvenir?

/** 
* Initialize and Draw JQGrid 
* @return 
*/ 
function drawFOMJQGrid(){ 

    var lastsel2; 

    jQuery("#tblGrid").jqGrid({  

     height: 180, 
     width:990, 
     datatype: "json", 
     colNames:['','Hotel','Outlet','Major Group','Item Group','Version'], 
     jsonReader : { 
       root: "regDetails", 
       page: "page", 
       total: "total", 
       records: "records", 
       repeatitems: false 
     }, 
     colModel:[ 
      {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions', formatoptions:{keys:true}}, 
      {name:'hotelName',index:'hotelName',align:"left",width:30,resizable:false}, 
      {name:'majorGroupName',index:'majorGroupName',align:"left", width:20,resizable:false}, 
      {name:'itemGroupName',index:'itemGroupName', width:30,align:"left",resizable:false}, 
      {name:'version',index:'version', width:20,align:"right",resizable:false,editable:true,hidden: false} 


     ], 

     onSelectRow: function(id){ 
     }, 
     /*afterSubmit : function(response, postdata){ 
         alert("AAAA"); 
     }, 
     afterComplete : function(response, postdata){ 
         alert("AAAA2"); 
     }, */    
     //rowList:[10,20,30], 
     rowNum:5, 
     pager: '#divGridPg', 
     sortname: 'hotelName', 
     viewrecords: true, 
     sortorder: "outletName", 
     gridview: true, 
     bgiframe: true, 
     autoOpen: false, 
     caption: 'POS Item Pricing', 
     forceFit: false, 
     loadtext: 'Loading ...', 
     sortable: true, 
     loadonce: false, 
     editurl: "itemPricingSave.action", //"/js/itemPricing/server.js",   
     datatype: "json" 




    }); 



    $("#tblGrid")[0].addJSONData(regGridJSONData); 
    $("#tblGrid").setGridParam({datatype: 'json'}); 
    jQuery("#tblGrid").jqGrid('navGrid','#divGridPg',{edit:true,add:false,del:false,reloadAfterSubmit:true});  


} 

/** 
* Initialize and Draw JQGrid 
* @return 
*/ 
function drawFOMJQGrid(){ 

    var lastsel2; 

    jQuery("#tblGrid").jqGrid({  

     height: 180, 
     width:990, 
     datatype: "json", 
     colNames:['','Hotel','Outlet','Major Group','Item Group','Version'], 
     jsonReader : { 
       root: "regDetails", 
       page: "page", 
       total: "total", 
       records: "records", 
       repeatitems: false 
     }, 
     colModel:[ 
      {name: 'myac', width:80, fixed:true, sortable:false, resize:false, formatter:'actions', formatoptions:{keys:true}}, 
      {name:'hotelName',index:'hotelName',align:"left",width:30,resizable:false}, 
      {name:'majorGroupName',index:'majorGroupName',align:"left", width:20,resizable:false}, 
      {name:'itemGroupName',index:'itemGroupName', width:30,align:"left",resizable:false}, 
      {name:'version',index:'version', width:20,align:"right",resizable:false,editable:true,hidden: false} 


     ], 

     onSelectRow: function(id){ 
     }, 
     /*afterSubmit : function(response, postdata){ 
         alert("AAAA"); 
     }, 
     afterComplete : function(response, postdata){ 
         alert("AAAA2"); 
     }, */    
     //rowList:[10,20,30], 
     rowNum:5, 
     pager: '#divGridPg', 
     sortname: 'hotelName', 
     viewrecords: true, 
     sortorder: "outletName", 
     gridview: true, 
     bgiframe: true, 
     autoOpen: false, 
     caption: 'POS Item Pricing', 
     forceFit: false, 
     loadtext: 'Loading ...', 
     sortable: true, 
     loadonce: false, 
     editurl: "itemPricingSave.action", //"/js/itemPricing/server.js",   
     datatype: "json" 




    }); 



    $("#tblGrid")[0].addJSONData(regGridJSONData); 
    $("#tblGrid").setGridParam({datatype: 'json'}); 
    jQuery("#tblGrid").jqGrid('navGrid','#divGridPg',{edit:true,add:false,del:false,reloadAfterSubmit:true});  


} 

Répondre

0

j'ai fait ce qui suit pour forcer le rechargement de la grille:

.navGrid('#pager', 
        {edit:true, 
        add: true, 
        del:true,refresh:false}, 
       { // edit options 

        afterSubmit: function() { 
         comptes[0].clearToolbar(); 
         comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
          return [true,'',false]; // no error and no new rowid 
         } 
       }, 
       { // add options 

        afterSubmit: function() { 
          comptes[0].clearToolbar(); 
          comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
         return [true,'']; // no error 
        } 
       } , 
       { // delete options 
        afterSubmit: function() { 
          comptes[0].clearToolbar(); 
          comptes.jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
         return [true,'']; // no error 
        } 
       }  
       ); 
+0

Merci pour votre aide. Cela a fonctionné quand l'édition a été faite par le dialogue d'édition de popup. Cependant, je veux éditer les données dans la table elle-même. Maintenant, lorsque les données sont éditées et enregistrées à partir de la grille elle-même sans l'utilisation de la popup, je veux un afterSubmit à feu pour rafraîchir la table. Où dois-je placer mon afterSubmit/Comment puis-je y parvenir? – MilindaD

+0

http://stackoverflow.com/questions/2109754/jqgrid-reload-grid-after-successfull-inline-update-inline-creation-of-record – Samson

0

Essayez de recharger jqGrid avec de nouvelles données après tous vos processus d'édition comme suit:

jQuery("#grid").jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid'); 
Questions connexes