2017-09-27 1 views
0

Je travaille actuellement sur un projet qui consiste à prendre la valeur d'une colonne spécifique d'un jqgrid. On m'a dit que vous devriez utiliser 'getCell' pour cela, mais au lieu de me donner une valeur, il retourne toujours false. Quelqu'un peut-il m'aider à résoudre ce problème? Mon code pour rendre mon jqGrid est ci-dessous:jqgrid: getCell retourne toujours false

RenderGrid: function() { 
      var $deft = $("#MyGrid"); 
      $("#MyGrid").jqGrid({ 
       datatype: "local", 
       editurl: "<%=Session("BaseUri")%>" + '/path/to/irrelevant/helper/page', 
       colNames: ['Actions', 'ButtonId', 'DefectCode', 'Name', ], 
       colModel: [ 
        { name: 'act', index: 'act', width: 100, sortable: false }, 
        { name: 'ButtonId', index: 'ButtonId', editable: false, width:50 }, 
        { name: 'DefectCode', index: 'DefectCode', editable: true, width: 50 }, 
        { name: 'Name', index: 'Name', sortable: false, width: 200, editable: true } 



       ], 
       pager: '#pMyGrid', 
       caption: "McGriddles", 
       multiselect: false, 
       loadonce: false, 
       rowNum: 10, 
       viewrecords: true, 
       sortorder: "desc", 
       width: new Number(300), 
       gridview: true, 
       height: "100%", 
       data: ButtonLibrary, 

       ondblClickRow: function (id) { 
        if (id && id !== lastSel) { 
         jQuery("#MyGrid").restoreRow(lastSel); 
         lastSel = id; 
        } 
        jQuery("#MyGrid").editRow(id, true); 

       }, 
       gridComplete: function() { 

        var ids = jQuery("#MyGrid").jqGrid('getDataIDs'); 
        for (var i = 0; i < ids.length; i++) { 
         var cl = ids[i]; 
         be = "<input style='height:22px;width:20px;' type='button' value='E' onclick=\"jQuery('#MyGrid').editRow('" + cl + "');\" />"; 
         se = "<input style='height:22px;width:20px;' type='button' value='S' onclick=\"jQuery('#MyGrid').saveRow('" + cl + "');\" />"; 
         var ButtonId = $('#MyGrid').jqGrid('getCell', ids[i], 'ButtonId'); 


//------------->   console.log(ButtonId); //always returns false 
          GBDelete = "<input style='height:22px;width:20px;' type='button' value='X' onclick=\"DeleteRowData('" + cl + "');\" />"; 
         jQuery("#MyGrid").jqGrid('setRowData', ids[i], { act: be + se + GBDelete }); 
        } 
       } 

      }); 


     }, 


     }; 

Répondre

0

Le getCell return false dans deux cas: 1. Si le nom de la colonne ne peut pas être trouvée dans colModel ou 2. l'identifiant de ligne ne peut pas être trouvé

Pour cela, il est recommandé d'avoir une colonne ou des données de la réponse, qui agit comme id. Lorsque vous utilisez des données locales comme dans votre cas, il est recommandé d'avoir la clé set: true dans le tableau colModel pour que cela fonctionne correctement.

aussi ma recommandation est d'avoir une colonne qui agira comme id (être sûr qu'il a une valeur unique) et cela devrait être défini comme clé: true dans colModel

EDIT: Si vous avez des difficultés avec cela, s'il vous plaît poster quelques données afin de regarder ce qui se passe.

Spécifiez également quelle version de jqGrid est utilisée