Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JqGrid火灾';aftersavefunc'&';successfunc';在'之前;存储行';_Javascript_Jquery_Asp.net_Asp.net Mvc_Jqgrid - Fatal编程技术网

Javascript JqGrid火灾';aftersavefunc'&';successfunc';在'之前;存储行';

Javascript JqGrid火灾';aftersavefunc'&';successfunc';在'之前;存储行';,javascript,jquery,asp.net,asp.net-mvc,jqgrid,Javascript,Jquery,Asp.net,Asp.net Mvc,Jqgrid,我试图在保存一行后重新加载网格,以便能够获取该行的Id以用于日志记录,但在保存之前,“aftersavefunc”和“successfunc”会触发“reloadGrid”(“电话网格”)。“aftersavefunc”和“successfunc”似乎是相同的。现在我无法添加或编辑任何行 var lastSel; function onTelephoneSelect(id, status, e) { if ($(e.target).hasClass('edit

我试图在保存一行后重新加载网格,以便能够获取该行的Id以用于日志记录,但在保存之前,“aftersavefunc”和“successfunc”会触发“reloadGrid”(“电话网格”)。“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(而不仅仅是定义对象并直接使用它),但您是否在触发之前检查了EditParameters的值是否设置正确:

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

您的getter位于
.hasClass('edit')
中,因此您可以在编辑sub之前尝试使用getter,就在
函数onTelephoneSelect(id,status,e){
之后,看看它是否有任何区别。(只是因为我们不知道您在哪里/何时调用onTelephoneSelect).

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

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

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

我需要EditParameters两次。一次用于添加新条目(问题中未提及)和编辑。不幸的是,这没有什么区别。单击编辑图标时会调用onTelephoneSelect,网格应仅在成功保存后重新加载。为什么假设保存发生在“之前”“aftersavefunc”被激发?在我看来,“jQuery(“#电话网格”).saveRow(lastSel);”在IF块中,它将在保存后在该块中激发aftersavefunc(它应该这样做吗?),然后运行“jQuery(#电话网格”).jqGrid('editRow',id,editParameters);”在块外-保存之后?在这种情况下,在查询ID之前重新加载Grid是合乎逻辑的?感谢您的帮助。我应该包装“aftersavefunc”。首先,请始终包含有关您使用的jqGrid版本和fork的信息(,商业版或旧版的jqGrid谢谢你的回复,Oleg。我会记住以后发布的版本和我使用的叉子。下面名为Jay的海报有适合我的答案。一切('aftersavefunc','successfunc')都正常工作。