触发 reloadGrid 后,JqGrid 不会关闭表单编辑

JqGrid doesn't close form edit after reloadGrid triggered

:-) 我想我可能在我使用的 jqGrid 5.8.3 js 上遇到了一个错误,但我不确定......我写了这段代码来在提交 formedit 后刷新网格:

ondblClickRow: function(rowid) {
jQuery(this).jqGrid(‘editGridRow’,
rowid,
{
editCaption: “Update”,
recreateForm:true,
dataheight: 180,
height: 270,
width: 350,
top: 40,
left: 170,
onclickSubmit : function (options, postdata) {
if( confirm(‘Update this record (Y/N)?’) ) {
//var rowid = postdata[this.id];
console.log( JSON.stringify(postdata) );
return {
// myParam: $(this).jqGrid(“getCell”, rowid, “URL”)
// test : “bla bla”
returndata : JSON.stringify( postdata )
//returndata : postdata
};
}
},
errorTextFormat: function (data) {
return ‘Error: ‘ + data.responseText
},
closeOnEscape: true,
closeAfterEdit: true,
afterSubmit : function() { $(“#grd-points_registry”).jqGrid(‘setGridParam’,{datatype:’json’}).trigger(‘reloadGrid’); }
//reloadAfterSubmit: false,
//aftersavefunc : function() { setTimeout( function() { $(“#grd-points_registry”).trigger(“reloadGrid”); }, 10); }
}
);
}

因为我发现在网上搜索 .trigger('reloadGrid') 以在 edit/add 之后强制重新加载,但是在触发 reloadGrid 之后编辑表单不会关闭并且在 Chrome 上进行调试我看到这个:

jquery.jqGrid.min.js?ver=5.8.3:652 Uncaught TypeError: Cannot read properties of undefined (reading ‘0’)
at Object.complete (jquery.jqGrid.min.js?ver=5.8.3:652:172)
at fire (jquery.js?ver=3.6.0:3500:31)
at Object.fireWith (jquery.js?ver=3.6.0:3630:7)
at done (jquery.js?ver=3.6.0:9811:21)
at XMLHttpRequest.<anonymous> (jquery.js?ver=3.6.0:10057:9)

但在这种情况下,所有字段都是数字……。同样的事情也发生在编辑和添加内部 navgrid 寻呼机......有什么想法吗?

谢谢!干杯!

路易吉诺

您不需要在 afterSubmit 中重新加载网格,因为网格会在数据发布到服务器后自动重新加载。在您的情况下,您一个接一个地进行两次重新加载,这会导致意外行为

实际上在表单编辑中重新加载是一个选项,您可以禁用和启用它。默认情况下重新加载是打开的。

在你的情况下,我建议你在 onclickSubmit 事件中设置 Json 数据类型(如果没有错误)并且不重新加载网格,因为参数已设置并且当你提交数据时它会重新加载(因为json 已有数据类型)。

我强烈建议您先阅读文档。