2017-09-27 3 views
0

Ich arbeite gerade an einem Projekt, bei dem der Wert aus einer bestimmten Spalte eines jqgrid übernommen wird. Mir wurde gesagt, dass Sie 'getCell' dafür verwenden sollten, aber anstatt mir einen Wert zu geben, wird immer false zurückgegeben. Kann mir jemand helfen, das zu lösen? Mein Code meine JqGrid zu machen ist unten:jqgrid: getCell gibt immer false zurück

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 }); 
        } 
       } 

      }); 


     }, 


     }; 

Antwort

0

Die GetCell in zwei Fällen false zurück: 1. Wenn der Spaltenname nicht in colModel oder 2. die Zeilen-ID kann nicht gefunden werden

gefunden werden kann

Für diesen Zweck ist es eine gute Idee, eine Spalte oder Daten aus der Antwort zu haben, die als ID fungiert.

Wenn Sie lokale Daten wie in Ihrem Fall verwenden, ist es eine gute Idee, den Schlüssel: true im colModel-Array zu setzen, damit das korrekt funktioniert.

Auch meine Empfehlung ist, eine Spalte zu haben, die als ID handeln (sein ein sicher, dass es eindeutigen Wert hat), und dies sollte als Schlüssel festgelegt werden: true in colModel

EDIT: Wenn Sie Schwierigkeiten damit haben, Bitte posten Sie einige Daten, um zu sehen, was passiert. Geben Sie an, welche Version von jqGrid verwendet wird

Verwandte Themen