当服务器返回某个错误时,再次重置并以可编辑模式持久保存JqGrid行的数据 在“successfunc”中,else部件应将行保留在可编辑模式下。。。
在“successfunc”中,else部分应在可编辑模式下保留行…jqGrid中报告错误的标准方法是设置HTTP响应的错误状态代码。If将强制执行当服务器返回某个错误时,再次重置并以可编辑模式持久保存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,“显示用户的
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);