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"
}
当我想从字符串中获取布尔值时。
这是一些额外的工作,但这是我唯一的选择。
我正在使用 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"
}
当我想从字符串中获取布尔值时。
这是一些额外的工作,但这是我唯一的选择。