在上一个post中遵循解决方案后,我发现如果存在extraparams,使用successfunc使用inlineNav添加/编辑后的jqGrid刷新将无效。
这是我的代码:
var editOptions = {
keys: true,
successfunc: function () {
alert('success');
var $self = $(this);
setTimeout(function () {
alert('refreshing');
$self.setGridParam({ datatype: 'json' });
$self.trigger("reloadGrid");
}, 500);
}
.jqGrid('inlineNav', {
addParams: {
useDefValues: true,
addRowParams:
{
editOptions,
extraparam: {
userId: function () {
return currentUserId;
},
companyId: function () {
return currentCompanyId;
}
}
}
},
editParams: {
editOptions
}
我尝试过放置editOptions的不同组合,但没有运气。
答案 0 :(得分:2)
您将extraparam
放在了错误的位置。它应该是editOptions
的属性。
<强>更新:强>
var reloadGridFunc = function () {
alert('success');
var $self = $(this);
setTimeout(function () {
alert('refreshing');
$self.setGridParam({ datatype: 'json' });
$self.trigger("reloadGrid");
}, 500);
};
.jqGrid('inlineNav', {
addParams: {
useDefValues: true,
addRowParams: {
// here are editOption used for Add
keys: true,
successfunc: reloadGridFunc,
extraparam: {
userId: function () {
return currentUserId;
},
companyId: function () {
return currentCompanyId;
}
}
}
},
editParams: {
// here are editOption used for Edit
keys: true,
successfunc: reloadGridFunc
}
});
答案 1 :(得分:0)
好的 - 我发现我做错了什么。它实际上是我上面代码的两个部分。首先,我改变了:
function successFunc() {
var $self = $(this);
setTimeout(function () {
$self.setGridParam({ datatype: 'json' });
$self.trigger("reloadGrid");
}, 500);}
我摆脱了var editOptions,其中包含了keys和successfunc参数。这显然与inlineNav方法的addParams部分中的successfunc调用相冲突。那么现在参数部分的内容如下:
.jqGrid('inlineNav', {
addParams: {
addRowParams:
{
keys: true,
extraparam:
{ userId: currentUserId,
companyId: currentCompanyId
},
successfunc: successFunc
}
},
editParams: {
successfunc: successFunc
}
});
所以现在当我添加或编辑内联记录时,刷新会在调用successfunc时发生。希望这有助于将来的其他人。感谢@Oleg对此的初步帮助。