JqG​​rid发射'aftersavefunc'和'saveRow'之前的'successfunc'

时间:2017-10-04 08:43:22

标签: javascript jquery asp.net asp.net-mvc jqgrid

我试图在保存一行后重新加载网格,以便能够获取该行的Id用于记录目的,但不知何故'aftersavefunc'和'successfunc'在保存之前触发'reloadGrid('#phoneGrid')'。似乎'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"
        }
    }

我现在非常绝望,无法找出任何有效的解决方案。

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

非常感谢提前。

2 个答案:

答案 0 :(得分:1)

'aftersavefunc'和'successfunc'是回调,但看起来你正试图直接设置这个函数,所以它们会在你想要之前被调用。

使用正确的回调签名,它应该如下所示:

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

答案 1 :(得分:0)

不确定为什么你需要 EditParameters 的getter(而不仅仅是定义对象并直接使用它),但是你检查了 editParameters 的值是否设置了恰当地,就在开火之前:

 jQuery("#telephoneGrid").jqGrid('editRow', id, editParameters);

你的getter在.hasClass('edit')里面,所以你可能会在{-1}}之后转到edit-sub之前尝试使用你的getter来看看它是否有任何区别。 (仅仅因为我们不知道你在何处/何时调用 onTelephoneSelect )。