2016-11-18 1 views
1

j'ai une grille JQuery qui est rempli sur un bouton clic en fonction de certaines options des menus déroulants.grille Jquery chargement uniquement le 1er clic et non rechargeant sur les clics ultérieurs

La grille est chargée avec des données sur le premier bouton clic. Mais lors de clics ultérieurs, la grille ne se recharge pas en fonction des sélections déroulantes modifiées.

Les données de grille chargées sur le premier bouton clic persiste jusqu'à ce que et à moins que je recharger la page.

Je suis passé par des solutions en ligne, telles que

  1. en utilisant $("#tblJQGrid").trigger("reloadGrid"); pour les clics ultérieurs, sauf pour le premier clic
  2. propriété cache:false.

Mais aucun d'entre eux travaillaient.

Voici mon code jqgrid pour référence

function BindGridData() 
{ 
    $("#tblJQGrid").jqGrid(
      {url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")"+ "?Parameters=" + Params + "", 
       datatype: "json", 
       //data: { "Parameters": Params }, 
       async: false, 
       mtype: 'GET', 
       cache: false, 
       colNames: ['Id','GeoGraphy', 'Completed', 'InProgress'], 
       colModel: [ 
       { name: 'Id', index: 'Id', width: 20, stype: 'text',hidden:true }, 
       { name: 'Geography', index: 'Geography', width: 150 }, 
       { name: 'Completed', index: 'Completed', width: 150 }, 
       { name: 'InProgress', index: 'InProgress', width: 150 }, 
       ], 
       pager:'#pager', 
       jsonReader: {cell:""}, 
       rowNum: 10, 
       sortorder: "desc", 
       sortname: 'Id', 
       viewrecords: true, 

       caption: "Survey Status:Summary", 
       scrollOffset: 0}); 

} 

Et voici comment je suis le bouton INITIALISATION clic événement

$(document).ready(function() { 
var firstClick=true; 
     $("#btnSubmit").click(function(){ 
      btnSubmitClick(); 
      debugger 
      if(!firstClick) 
      { 
       $("#tblJQGrid").trigger("reloadGrid"); 
      } 
      firstClick=false; 
      BindGridData(); 
     }); 
}); 

Quelqu'un peut-il me dire ce que je fais mal?

+0

Cela peut être utile pour vous, un exemple de travail http://trirand.com/blog/jqgrid/jqgrid.html –

Répondre

0

Il semble qu'il y ait malentendu typique ce que le code $("#tblJQGrid").jqGrid({...}); faire. C'est créer la grille. Cela signifie que dans les convertis la table vide <table id="btnSubmit"></table> dans la structure relativement complexe des divs et des tables. Voir here. Après avoir compris cela il devrait être clair que le deuxième appel de BindGridData n'a aucun sens, parce que table#btnSubmit n'est pas plus vide. jqGrid le teste et ne fait rien. Ainsi votre code actuel vient déclencher reloadGrid avec l'ancienne URL (voir Params).

Pour résoudre le problème vous avez deux options principales:

  1. utilisation url: "@Url.Action("GetGeographyBreakUpData", "GeoMap")" et postData avec des propriétés définies comme fonctions (voir the old answer)
  2. recréent la grille clic au lieu de déclenchement reloadGrid. Vous pouvez appeler la méthode GridUnload (voir the old answer) avant l'appel de BindGridData.