在我的网格上,在用户在底行输入文本后,我添加了另一行,以便他们可以根据需要填写另一行。网格将根据用户的需要增长。这工作正常,但是在页面重新加载并从db填充后,addrowdata()函数不会遵循现有的行ID并创建重复项,从1再次开始,例如, jqg1。它应该查看现有的行ID并创建新的唯一ID。所以如果我已经有5行,它可能从jqg6开始。以下是onCellSelect中的相关代码:
var records = jQuery("#table-1").jqGrid('getGridParam', 'records');
var lastRowId = jQuery("#table-1").jqGrid('getDataIDs')[records - 1];
if (lastRowId == id)
{
jQuery('#table-1').addRowData(undefined, {}, 'last');
}
我也试过$ .jgrid.randId()而不是未定义,结果与预期相同。
由于
赖安
答案 0 :(得分:1)
我认为错误发生在使用数据库中的数据填充网格的部分。保存在数据库中的数据具有唯一ID。 id是而不是,形式为jqg1,jqg2,......所以如果不应该没有冲突。您应该使用数据库中的ID填充JSON的id
字段。
另一种可能性是您只需自己指定rowid
addRowData
参数(第一个参数)。在这种情况下,您将完全控制网格中添加的行的新ID。
$.jgrid.randId
函数的代码非常简单。 $.jgrid.uidPref
初始化为'jqg'
,$.jgrid.guid
初始化为1. $.jgrid.randId
函数执行以下操作
$.jgrid.randId = function (prefix) {
return (prefix? prefix: $.jgrid.uidPref) + ($.jgrid.guid++);
}
如果确实需要,您可以增加(但不减少)$.jgrid.guid
值而不会产生任何负面影响。