2016-06-23 14 views
2

Ich verwende jqGrid Version 4.6.0 ich mit getLocalRow in jqGrid begann, nachdem ich hier eine Frage in This QuestiongetLocalRow gibt falsche Daten nach Zeile löschen

gebeten wird, einen Beispielcode I bereit, wenn jemand auf eine Schaltfläche klickt Ich lösche row2, aber wenn ich das tue ('getLocalRow', 2) gibt es mir Zeile 3? Ist der rowId Parameter in getLocalRow nicht die rowID des Grids, welches der Schlüssel ist? getRowData funktioniert wie erwartet, aber ich möchte nicht, dass verwenden, weil es mir alles als String gibt wie in This Answer in This Question und beantwortet bemerkt

Here ist die jsFiddle Probe zu testen.

deleteRow = function() 
{ 
    $("#list").jqGrid('delRowData', 2); 
    var row2 = $("#list").jqGrid('getLocalRow', 2); 
    var row3 = $("#list").jqGrid('getLocalRow', 3); 

    var row2Corrent = $("#list").jqGrid('getRowData', 2); // Empty 
    var row3correct = $("#list").jqGrid('getRowData', 3);// gives {id:3, DocGroupName: "name3", DocList: "list3", Mandatory: "No"}, 
} 
      "use strict"; 
      var mydata = [ 
        {id:1, DocGroupName: "name1", DocList: "list1", Mandatory: "Yes"}, 
        {id:2, DocGroupName: "name2", DocList: "list2", Mandatory: "No"}, 
        {id:3, DocGroupName: "name3", DocList: "list3", Mandatory: "No"}, 
        {id:4, DocGroupName: "name4", DocList: "list4", Mandatory: "Yes"}, 
       ]; 
      $("#list").jqGrid({ 


       //url:'php.scripts/customers.get.php', 
       //datatype: 'xml', 
       //mtype: 'POST', 
       datatype: "local", 
       data: mydata, 
       height: "auto", 
       colNames: ['id', 'Document Group Name','Document Name','No of Mandatory'], 
       colModel :[ 
        {name:'id',key:true, index:'id', width:55}, 
        {name:'DocGroupName', index:'DocGroupName', width:90, editable: true,edittype: 'select', 
              }, 
        {name:'DocList', index:'DocList', width:90, editable: true }, 
        {name:'Mandatory', index:'Mandatory', width:90, editable: true} 

       ], 
       pager: '#pager', 
       rowNum:10, 
       rowList:[10,20,30], 
       sortname: 'idcustomers', 
       sortorder: 'asc', 
       viewrecords: true, 
       gridview: true, 
       caption: 'Customers', 
       cellEdit: true, 
       cellsubmit: 'clientArray', 
       afterSaveCell: function(rowid,name,val,iRow,iCol) { 
        if(name=='DocGroupName') 
        { 
        var row = $('#list').jqGrid('getRowData',currentRow);  
        row.DocList=''; 
        var row = $('#list').jqGrid('setRowData',currentRow,row);  
        } 
       }, 
       beforeSaveCell: function(rowid,name,val,iRow,iCol) { 
       // var row = $("#list").getRowData(rowid); 
        var row = $('#list').jqGrid('getRowData',rowid); 
        currentRow= rowid; 

       }, 

      }); 

Antwort

0

Die einzige Lösung, die ich für das Problem gefunden ist

getRowData(rowId); 

zu verwenden, da getrowdata alles als String gibt, gebe ich zum Beispiel einige Datenkonvertierungen zu tun

var intValue = parseInt erforderlich war, (intField);

Wenn ich die ID von String oder

var trueFalse= parseBool(boolField); 
    function parseBool(val) { 
     return val === true || val === "true" 
    } 

Wenn ich wollte aus string boolean wollte.

Es ist ein bisschen mehr Arbeit, aber das ist die einzige Option, die ich übrig habe.