我添加了id为" new“的新行。当我在指定为id的列中保存了带有新值的行之后(比如"code"),它仍然是id为" new“的,除非我重新加载网格或者删除该行并使用新的id重新添加它。
在保存行之后,是否有其他函数可以更改rowid?
谢谢。
发布于 2012-02-27 23:23:32
您可以使用jQuery.attr设置任何属性,包括id。您只需非常小心地更改id属性。例如,如果您使用loadonce: true选项,或者如果您使用datatype: 'local',那么内部存在data和_index参数,它们将缓存当前id到行数据的映射。因此,在这种情况下,您需要更新jqGrid的_index参数。
如果你在实现上有问题,你应该发布你当前使用的代码。了解jqGrid的一些选项(如datatype、loadonce)非常重要。此外,重要的是要知道您使用的是哪种editing mode以及在哪种环境中。
发布于 2012-07-28 06:21:20
更改id需要几个步骤,因为jqGrid不会更改网格的主键,所以我们必须手动完成所有步骤:
var new_id = 39; //for example
aftersavefunc: function( old_id ) {
//get data param
var row = grid.jqGrid('getLocalRow', old_id);
console.log(row); //use for firefox test
row._id_ = new_id;
grid.jqGrid('setRowData',old_id,{my_id:new_id});
$("#"+response).attr("id", new_id); //change TR element in DOM
//very important to change the _index, some functions using the
var _index = grid.jqGrid('getGridParam', '_index');
var valueTemp = _index[old_id];
delete _index[old_id];
_index[new_id] = valueTemp;
}发布于 2018-02-22 01:29:59
jqgrid中的is changeRowId函数:
function aftersavefunc(rowId, response) {
var json = $.parseJSON(response.responseText);
var $tr = $("#" + rowId);
setTimeout(function () {
$grid.jqGrid("changeRowid", rowId, json.Id);
$grid.jqGrid('setSelection', json.Id);
setFocusToGrid();
}, 1000);
}setTimeout是必需的,因为jqgrid会在调用aftersavefunc之后恢复旧的行id。
https://stackoverflow.com/questions/9464090
复制相似问题