3

我正在使用 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 的回答,我发现oneditfuncaddRowParams. 我发现使用 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);
    }
}
4

1 回答 1

3

要设置新行的 id,请使用:

 $("#new_row").attr('id',newId);

参考这个问题: 我可以在不重新加载的情况下更改 JQGrid 中一行的主 ID 吗?

于 2012-05-31T18:15:05.873 回答