getLocalRow 在删除行后给出错误的数据

getLocalRow gives wrong data after deleting row

我正在使用 jqgrid 版本 4.6.0 在我问了一个问题后,我开始在 jqGrid 中使用 getLocalRow

这是我准备的示例代码当有人点击一个按钮时我删除了第 2 行但是当我这样做时 ('getLocalRow', 2) 它给了我第 3 行? getLocalRow 中的 rowId 参数不是关键的网格的 rowID 吗? getRowData 按预期工作,但我不想使用它,因为它以字符串形式提供了所有内容,如 中所述并在

中回答

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;

                },

            });

我发现该问题的唯一解决方案是使用

getRowData(rowId);

由于 getrowdata 将所有内容都作为字符串提供,因此我需要进行一些数据转换,例如

var intValue= parseInt(intField);

当我想要字符串中的 id 或

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

当我想从字符串中获取布尔值时。

这是一些额外的工作,但这是我唯一的选择。