当服务器返回某个错误时,再次重置并以可编辑模式持久保存JqGrid行的数据 在“successfunc”中,else部件应将行保留在可编辑模式下。。。

当服务器返回某个错误时,再次重置并以可编辑模式持久保存JqGrid行的数据 在“successfunc”中,else部件应将行保留在可编辑模式下。。。,jqgrid,jqgrid-asp.net,mvcjqgrid,Jqgrid,Jqgrid Asp.net,Mvcjqgrid,在“successfunc”中,else部分应在可编辑模式下保留行…jqGrid中报告错误的标准方法是设置HTTP响应的错误状态代码。If将强制执行errorfunc,例如在使用内联编辑的情况下。如果服务器代码无法设置HTTP响应的错误状态代码,那么jqGrid提供了另一种选择。回调successfunc可用于检查服务器的响应。successfunc应立即通知jqGrid响应是否成功。如果响应成功,回调函数应返回数组[true],如果出现错误,则返回带有两个元素的数组:[false,“显示用户的

在“successfunc”中,else部分应在可编辑模式下保留行…

jqGrid中报告错误的标准方法是设置HTTP响应的错误状态代码。If将强制执行
errorfunc
,例如在使用内联编辑的情况下。如果服务器代码无法设置HTTP响应的错误状态代码,那么jqGrid提供了另一种选择。回调
successfunc
可用于检查服务器的响应。
successfunc
应立即通知jqGrid响应是否成功。如果响应成功,回调函数应返回数组
[true]
,如果出现错误,则返回带有两个元素的数组:
[false,“显示用户的错误消息”]
。回调函数
successfunc
通常从服务器的响应中获取错误消息


更新:您应该使用
restoreAfterError:false
(请参阅当前代码中的
“restoreAfterError”:true
),以防止在开始内联编辑之前还原行的状态。

您的意思是:if(msgType==“S”){alert(msg)$jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');}else{alert(msg);return[false,msg];}@shyamshankar:差不多,但您需要对上述代码进行一些更改。首先,您应该了解
.trigger('reloadGrid')
同步工作,因此您上面的代码将首先启动并可能处理网格的重新加载,然后从
.trigger('reloadGrid')
返回,并将继续当前执行。我建议您永远不要使用
.trigger('reloadGrid'))
直接在代码中,并将其包装在
setTimeout
中。它将允许处理当前回调直到结束,只有在这之后才能开始处理
.trigger('reloadGrid')
@shyamshankar:相应的代码可能类似于:
if(msgType==“S”){alert(msg);setTimeout(函数(){$(CityMaster.idGrid).jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');},0);return[true];}否则{alert(msg);return[false,msg];}
您可以将
setTimeout
的第二个参数从
0
替换为
50
,例如,但0应该已经工作了。这样的代码返回
[true]
[false,msg]
,处理
successfunc
直到结束,然后才开始
setTimeout
,这将触发重新加载网格。当msgType返回“S”以外的值时,我想将JQGrid行设置为内联可编辑模式来自服务器。@shyamshankar:我看到您的代码中有一个小错误。您使用
restoreAfterError:true
而不是
restoreAfterError:false
。正是这个设置通知jqGrid从行还原旧值(开始内联编辑之前的状态)或在显示错误消息后保持内联编辑。您必须将
successfunc
的正确实现(出现错误时返回
[false,msg]
)与选项
restoreaaftererror:false
相结合。
 var editparameters= {
                    "keys": true,
                    "oneditfunc": function () {
                        debugger;
                        $("select#" + arrprimarykey + "_StateName").val(rowData.StateCode);
                    },
                    "successfunc": function (data) {
                        debugger;
                        var msg = JSON.parse(data.responseText).Message;
                        var msgType = JSON.parse(data.responseText).MsgType;
                        if (msgType == "S") {
                            alert(msg);
                            $(CityMaster.idGrid).jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
                        } else {
                            alert(msg)
                           HERE RESTORE TO INLINE EDITABLE MODE THE ROW ,AGAIN IF ERROR RETURN FROM SERVER
                        }
                    },

                    "url": CityMaster.EditUrl,
                    "extraparam": {},
                    "aftersavefunc": function (data) {
                        debugger;
                    },
                    "errorfunc": null,
                    "afterrestorefunc": function (data) {
                        debugger;
                        $(CityMaster.idGrid).jqGrid('setGridParam', { datatype: 'json' }).trigger('reloadGrid');
                    },
                    "restoreAfterError": true,
                    "mtype": "POST"
                }
                jQuery(CityMaster.idGrid).jqGrid('editRow', arrprimarykey, editparameters);