删除行后,getLocalRow会提供错误的数据

时间:2016-06-23 16:01:13

标签: jqgrid

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

这是我准备的示例代码当有人点击按钮时我删除了row2但是当我这样做时('getLocalRow',2)它给了我第3行? getLocalRow中的rowId参数不是网格的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;

                },

            });

1 个答案:

答案 0 :(得分:0)

我发现问题的唯一方法是使用

getRowData(rowId);

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

var intValue = parseInt(intField);

当我想要字符串或

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

当我想要来自字符串的布尔值时。

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