jqGrid使用inlineNav刷新不能与extraparams
问题描述:
在以前的post中的解决方案之后,我发现如果extraparams存在,使用successfunc添加/编辑inlineNav后jqGrid刷新不起作用。jqGrid使用inlineNav刷新不能与extraparams
这里是我的代码:
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放置的不同组合,但没有运气。
答
你把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
}
});
答
好了 - 我发现我在做什么错。它实际上在我上面的代码的两个部分。首先,我改变了:
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为此提供了最初的帮助。
这是我的理解,我需要将任何添加参数添加到添加参数部分。我只需要添加这些额外的参数。 –
@JerryP:是的,但是'addParams:{addRowParams:{editOptions,extraparam:{...}}}'您使用的是**错误**。 'addParams:{addRowParams:editOptions}'是正确的,'addParams:{addRowParams:{keys:true,extraparam:{...},successfunc:function(){...}}}'也是正确的。 addParams的值应该是**对象**,就像'addRow'函数的参数一样(参见[这里](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#addrow) )。该对象可以具有'addRowParams'属性。 'addRowParams'属性的值应该是** object **和'editRow'的选项。 – Oleg
@JerryP:editRow的选项是在这里描述的(http://www.trirand.com/jqgridwiki/doku.php?id=wiki:inline_editing#editrow)。您使用的语法'{editOptions,extraparam:{...}}'已经错了。这里的editOptions是什么?正确的语法应该是'{property1Name:property1Value,property2Name:property2Value,...}'。 – Oleg