JqGrid 在 'saveRow' 之前触发 'aftersavefunc' & 'successfunc'
JqGrid fires 'aftersavefunc' & 'successfunc' before 'saveRow'
我试图在保存一行后重新加载网格以便能够获取行的 Id 以进行记录,但不知何故 'aftersavefunc' 和 'successfunc' 触发 'reloadGrid('# telephoneGrid')' 在保存之前。 'aftersavefunc' 和 'successfunc' 似乎是相同的。现在我无法添加或编辑任何行。
var lastSel;
function onTelephoneSelect(id, status, e) {
if ($(e.target).hasClass('edit')) {
var editParameters = getEditParameters();
if (id && id !== lastSel) {
jQuery('#telephoneGrid').saveRow(lastSel);
}
jQuery("#telephoneGrid").jqGrid('editRow', id, editParameters);
lastSel = id;
}
}
function getEditParameters() {
return {
"keys": true,
"oneditfunc": null,
"successfunc": null,
"url": '@Url.Action("SaveTelephoneEntry","TelephoneEntry")?customerId=' + $('#SelectCompany').val(),
"extraparam": {},
"aftersavefunc": reloadGrid('#telephoneGrid'),
"errorfunc": null,
"afterrestorefunc": null,
"restoreAfterError": true,
"mtype": "POST"
}
}
我现在非常绝望,找不到任何可行的解决方案。
有人可以在这里帮助我,或者已经遇到同样的问题并找到了可行的解决方案吗?
非常感谢。
不确定为什么 EditParameters 需要 getter(而不是仅仅定义对象并直接使用它),但是您检查过 [=17 的值了吗? =]editParameters 是否正确设置,就在开火之前:
jQuery("#telephoneGrid").jqGrid('editRow', id, editParameters);
你的 getter 在 .hasClass('edit')
里面,所以你可以在进入 edit-sub 之前尝试使用你的 getter,就在 function onTelephoneSelect(id, status, e) {
之后,看看它是否有任何区别。 (只是因为我们不知道where/when你调用onTelephoneSelect)。
'aftersavefunc' 和 'successfunc' 是回调,但您似乎正在尝试直接设置函数,因此在您打算之前调用它们。
使用正确的回调签名,它应该看起来像这样:
"aftersavefunc": function (rowid, response, options) {
reloadGrid('#telephoneGrid');
},
我试图在保存一行后重新加载网格以便能够获取行的 Id 以进行记录,但不知何故 'aftersavefunc' 和 'successfunc' 触发 'reloadGrid('# telephoneGrid')' 在保存之前。 'aftersavefunc' 和 'successfunc' 似乎是相同的。现在我无法添加或编辑任何行。
var lastSel;
function onTelephoneSelect(id, status, e) {
if ($(e.target).hasClass('edit')) {
var editParameters = getEditParameters();
if (id && id !== lastSel) {
jQuery('#telephoneGrid').saveRow(lastSel);
}
jQuery("#telephoneGrid").jqGrid('editRow', id, editParameters);
lastSel = id;
}
}
function getEditParameters() {
return {
"keys": true,
"oneditfunc": null,
"successfunc": null,
"url": '@Url.Action("SaveTelephoneEntry","TelephoneEntry")?customerId=' + $('#SelectCompany').val(),
"extraparam": {},
"aftersavefunc": reloadGrid('#telephoneGrid'),
"errorfunc": null,
"afterrestorefunc": null,
"restoreAfterError": true,
"mtype": "POST"
}
}
我现在非常绝望,找不到任何可行的解决方案。
有人可以在这里帮助我,或者已经遇到同样的问题并找到了可行的解决方案吗?
非常感谢。
不确定为什么 EditParameters 需要 getter(而不是仅仅定义对象并直接使用它),但是您检查过 [=17 的值了吗? =]editParameters 是否正确设置,就在开火之前:
jQuery("#telephoneGrid").jqGrid('editRow', id, editParameters);
你的 getter 在 .hasClass('edit')
里面,所以你可以在进入 edit-sub 之前尝试使用你的 getter,就在 function onTelephoneSelect(id, status, e) {
之后,看看它是否有任何区别。 (只是因为我们不知道where/when你调用onTelephoneSelect)。
'aftersavefunc' 和 'successfunc' 是回调,但您似乎正在尝试直接设置函数,因此在您打算之前调用它们。
使用正确的回调签名,它应该看起来像这样:
"aftersavefunc": function (rowid, response, options) {
reloadGrid('#telephoneGrid');
},