我试图在保存一行后重新加载网格,以便能够出于记录目的获取该行的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"
        }
    }


我现在非常绝望,无法找到任何可行的解决方案。

有人可以在这里为我提供帮助,还是已经遇到了相同的问题并找到了可行的解决方案?

提前谢谢了。

最佳答案

“ aftersavefunc”和“ successfunc”是回调,但您似乎正在尝试直接设置该函数,因此在您打算之前调用它们。

使用正确的回调签名,它应该看起来像这样:

"aftersavefunc": function (rowid, response, options) {
    reloadGrid('#telephoneGrid');
},

10-04 13:05