2016-06-23 5 views
2

Я использую jqgrid версии 4.6.0 я начал использовать getLocalRow в jqGrid, когда я задал вопрос в This QuestiongetLocalRow дает неверные данные после удаления строки

Вот пример кода, я приготовился Когда ктото нажимает кнопку Я удаляю row2, но когда я делаю ('getLocalRow', 2), он дает мне строку 3? Не является ли параметр rowId в getLocalRow идентификатором rowID сетки, который является ключом? getRowData работает, как ожидалось, но я не хочу использовать это, потому что это дает мне все, как строку, как указано в This Question и ответил This Answer

Here является образцом jsFiddle для тестирования.

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; 

       }, 

      }); 

ответ

0

Единственное решение, которое я нашел к этой проблеме заключается в использовании

getRowData(rowId); 

Поскольку getrowdata дает все в виде строки я обязан выполнять некоторые преобразования данных, например

вар intValue = ParseInt (intField);

Когда я хотел идентификатор из строки или

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

Когда я хотел булева из строки.

Это немного дополнительная работа, но это единственный вариант, из которого я остался.