jqgrid randId()在页面重新加载后生成重复项

时间:2012-02-09 20:03:15

标签: jqgrid

在我的网格上,在用户在底行输入文本后,我添加了另一行,以便他们可以根据需要填写另一行。网格将根据用户的需要增长。这工作正常,但是在页面重新加载并从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()而不是未定义,结果与预期相同。

由于

赖安

1 个答案:

答案 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值而不会产生任何负面影响。