如何获取Jqgrid的行ID



目前,javascript中的以下流程根据rowId值确定要更新的行,然后更新该行

const rowData = $('#list').jqGrid('getRowData', rowId);
$('#list').jqGrid('setRowData', rowId, rowData);
$('#list').trigger('reloadGrid');

但是,基于四个Jqgrid列的值,rowId最终是唯一的,因此使用以下方法获取Jqgrid列表数据,然后使用表ID获取rowId。

let rowId;
for (let i = 0; i < rows.length; i++) {
if (rows[i].cells[0].title.trim() === valueA
&& rows[i].cells[1].title.trim() === valueB
&& rows[i].cells[1].title.trim() === valueC
&& rows[i].cells[1].title.trim() === valueD) {
rowId = $(rows[i]).closest('tr').attr('id');
break;
}
}

最初,这个方法工作得很好,但是在使用Jqgrid的Sort函数之后,我试图再次更新行,结果,更新了不同的行。

使用Sort函数时恐怕无法获得目标行的rowId。有没有办法得到目标行与或不排序?

问题出在你最后的代码

let rowId;
for (let i = 0; i < rows.length; i++) {
if (rows[i].cells[0].title.trim() === valueA
&& rows[i].cells[1].title.trim() === valueB
&& rows[i].cells[1].title.trim() === valueC
&& rows[i].cells[1].title.trim() === valueD) {
rowId = $(rows[i]).closest('tr').attr('id');
break;
}
}

您的代码依赖于rows[i]的假设,其中rows[i]是该行的当前位置。排序后,这个位置当然会发生变化,例如,如果id = x的行位于位置3 -即行[3],排序后,这些行会发生变化,结果意味着不同的行可以满足您的标准。

要检查这个,你可以简单地修改你的代码,像这样

let rowId, myArray=[];
for (let i = 0; i < rows.length; i++) {
if (rows[i].cells[0].title.trim() === valueA
&& rows[i].cells[1].title.trim() === valueB
&& rows[i].cells[1].title.trim() === valueC
&& rows[i].cells[1].title.trim() === valueD) {
rowId = $(rows[i]).closest('tr').attr('id');
myArray.push(rowId);
}
}
console.log(myArray)

也许你会看到不止一个id符合这个条件。

最新更新