我正在使用 jqGrid,inlineNav
以便用户可以在本地编辑/添加/删除行,然后在完成后将所有更改提交到服务器。我希望能够在本地向网格中添加多个新行,但由于其他要求,我需要新添加的行具有唯一 ID 而不是默认的new_row
. 此外,由于外键约束,我不能使用 ajax 调用在添加时立即保留新行。我尝试了以下操作,但 ID 值没有改变:
<input type="hidden" id="newRowIndex" />
$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', {
edit: false,
addtext: "Add",
save: false,
cancel: false,
addParams: {
position: 'last',
addRowParams: {
keys: true,
oneditfunc: function (rowid) {
var newRowIndex = $("#newRowIndex").val();
if (!newRowIndex)
newRowIndex = 1;
$("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', '');
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}
}
});
我只想将新添加的行的 ID 设置为new_row_1
,为每个新添加的行增加索引。这可能吗?如果可以,怎么做?
解决方案
除了 Dean 的回答,我发现oneditfunc
在addRowParams
. 我发现使用 jqGrid 的afterInsertRow
事件有效:
afterInsertRow: function (rowid, rowdata, rowelem) {
if (rowid == 'new_row') {
var newRowIndex = $("#newRowIndex").val();
if(!newRowIndex)
newRowIndex = 1;
var newRowId = rowid + "_" + newRowIndex;
$("#new_row").attr('id', newRowId);
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}