我添加了id为“new”的新行。在我将该行保存为指定为id的列(称为“代码”)后,将保留id为“new”,除非我重新加载网格或删除行&再次使用新的ID添加它。如何更改rowid
是否有另一个功能来保存该行后更改rowid?
谢谢。
我添加了id为“new”的新行。在我将该行保存为指定为id的列(称为“代码”)后,将保留id为“new”,除非我重新加载网格或删除行&再次使用新的ID添加它。如何更改rowid
是否有另一个功能来保存该行后更改rowid?
谢谢。
您可以使用jQuery.attr设置任何属性,包括id
。您应该只更改id
属性时非常小心。例如,如果您使用loadonce: true
选项,或者如果您使用datatype: 'local'
,则内部存在data
和_index
参数,它们将当前ID缓存到行数据映射。所以在这种情况下,您需要更新jqGrid的_index
参数。
如果您在执行过程中遇到问题,您应该发布您当前使用的代码。 jqGrid的某些选项(如datatype
,loadonce
)非常重要。此外重要的是要知道哪些editing mode和哪些你使用。
更改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;
}
的是jqGrid的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。