Javascript 编辑和保存任何行后重新加载JqGrid表

Javascript 编辑和保存任何行后重新加载JqGrid表,javascript,php,ajax,jqgrid,Javascript,Php,Ajax,Jqgrid,我在一个php文件中有4个jqGrid表,并为每个网格表传递不同的json数组。我在网格上显示的数据来自1个具有不同sql条件的表 我正在对所有网格使用内联编辑功能,当我编辑并保存表1中的行时,我希望所有网格都应得到刷新,以便如果之前编辑的行存在于下一个表中,则该行应自动消失。 我想在编辑任何表格中的任何行后,重新加载所有表格。 我编写了以下代码: <table id="jqgrid"></table> <div id="pjqgrid"></div&g

我在一个php文件中有4个jqGrid表,并为每个网格表传递不同的json数组。我在网格上显示的数据来自1个具有不同sql条件的表

我正在对所有网格使用内联编辑功能,当我编辑并保存表1中的行时,我希望所有网格都应得到刷新,以便如果之前编辑的行存在于下一个表中,则该行应自动消失。 我想在编辑任何表格中的任何行后,重新加载所有表格。 我编写了以下代码:

<table id="jqgrid"></table>
<div id="pjqgrid"></div>

<table id="jqgrid1"></table>
<div id="pjqgrid1"></div>

<table id="jqgrid2"></table>
<div id="pjqgrid2"></div>

<table id="jqgrid3"></table>
<div id="pjqgrid3"></div>

<script>
pageSetUp();
var myEditOptions = {
    keys: true,
    successfunc: function (response) {
       // alert(JSON.stringify(response)); 
        var msg=response.responseText;
        var n =msg.search("Updated");
        //alert(n);
        if(n>=0)
        {
            $(".inner").html("<div class='alert alert-success fade in'>     <button class='close' data-dismiss='alert'>X</button><i class='fa-fw fa fa-thumbs-up'></i>  "+msg+" </div>");
        } 
        else
        {
            $(".inner").html("<div class='alert alert-danger fade in'><button class='close' data-dismiss='alert'>X</button><i class='fa-fw fa fa-thumbs-down'></i>  "+msg+" </div>");      
        }
        $("#jqgrid").trigger('reloadGrid');
        $("#jqgrid1").trigger('reloadGrid');
        $("#jqgrid2").trigger('reloadGrid');
        $("#jqgrid3").trigger('reloadGrid');
        jQuery("#jqgrid").jqGrid('resetSelection');
        jQuery("#jqgrid1").jqGrid('resetSelection');
        jQuery("#jqgrid2").jqGrid('resetSelection');
        jQuery("#jqgrid3").jqGrid('resetSelection');
        return true;     
    },
    errorfunc: function (rowid,response) {
        //alert(rowid);
    },
    afterrestorefunc:function (rowid,response) {
        jQuery("#jqgrid").jqGrid('resetSelection');
    }

};
</script>

页面设置();
var myEditOptions={
凯斯:没错,
successfunc:函数(响应){
//警报(JSON.stringify(响应));
var msg=response.responseText;
var n=msg.search(“更新”);
//警报(n);
如果(n>=0)
{
$(“.inner”).html(“X”+msg+”);
} 
其他的
{
$(“.inner”).html(“X”+msg+”);
}
$(“#jqgrid”).trigger('reloadGrid');
$(“#jqgrid1”).trigger('reloadGrid');
$(“#jqgrid2”).trigger('reloadGrid');
$(“#jqgrid3”).trigger('reloadGrid');
jQuery(“#jqgrid”).jqgrid('resetSelection');
jQuery(“#jqgrid1”).jqGrid('resetSelection');
jQuery(#jqgrid2”).jqGrid('resetSelection');
jQuery(“#jqgrid3”).jqGrid('resetSelection');
返回true;
},
errorfunc:函数(rowid,响应){
//警报(rowid);
},
afterrestorefunc:函数(rowid,响应){
jQuery(“#jqgrid”).jqgrid('resetSelection');
}
};

建议使用
aftersavefunc
而不是
successfunc
重新加载网格。此外,您应该将
.trigger(“reloadGrid”)
放在
setTimeout
的内部。它将允许在开始重新加载之前完成编辑处理:

var myEditOptions = {
    keys: true,
    aftersavefunc: function () {
        setTimeout(function () {
            $("#jqgrid,#jqgrid1,#jqgrid2,#jqgrid3").trigger("reloadGrid");
        }, 50);
    },
    ...
};

你的问题是什么?您当前有什么问题?在任何表中保存任何行后,我希望刷新所有网格,以便刷新表中显示的数据。抱歉,这不是问题。您已经发布了一些调用
reloadGrid
的代码。因此,您应该描述当前代码中哪些不正确,哪些是预期的结果,以及您看到的结果。我把我的答案贴在我建议你使用
aftersavefunc
回调而不是
successfunc
的地方,并在编辑完行后重新加载(需要使用
setTimeout
)。此外,保持堆栈溢出的常见规则也很重要。你已经有一些问题了。你应该开始回答问题。当然。谢谢你的回答。我会使用aftersavefunc,如果一切正常,我会接受你的回答。