我希望在内联编辑后执行一些操作,但是当我使用此代码时,编辑刚刚停留在编辑模式下的行。如果我删除onSelectRow
,则行编辑效果很好。
onSelectRow: function(rowid){
$(grid_selector).jqGrid('editRow', rowid, true, null, null, null, {}, aftersavefunc);
function aftersavefunc(rowid, result) {
alert("X");
$(grid_selector).trigger("reloadGrid");
}
},
答案 0 :(得分:0)
首先你写道:
如果我删除
onSelectRow
,则行编辑效果很好。
听起来很可疑,因为您在editRow
内开始行编辑。如果在删除onSelectRow
回调后内联编辑仍然有效,那么您应该搜索代码的其他部分,其中editRow
将直接间接调用。例如,您可以使用formatter: "actions"
或inlineNav
为您启动editRow
。要通知jqGrid使用您的aftersavefunc
,您必须使用inlineNav
或formatter: "actions"
的相应参数。例如inlineNav
提供editParams
和addParams
选项。通常会定义一组操作内联编辑参数(请参阅下面代码中的editOptions
变量),并在editRow
的直接和间接调用中使用它:
var editOptions = {
keys: true,
successfunc: function () {
var $self = $(this);
setTimeout(function () {
$self.trigger("reloadGrid");
}, 50);
}
},
$grid = $("#list");
$grid.jqGrid({
...
onSelectRow: function (rowid) {
$(thus).jqGrid("editRow", rowid, editOptions);
}
});
$grid.jqGrid("navGrid", "#pager", { edit: false, add: false });
$grid.jqGrid("inlineNav", "#pager", {
addParams: {
position: "last",
addRowParams: editOptions
},
editParams: editOptions
});
顺便说一句,您可以点击inlineNav
添加的原始修改按钮,而不是直接调用editRow
。有关相应的代码示例(onSelectRow
回调内部),请参阅the answer。