jqgrid表单编辑:有关删除行后的操作的问题

经过长时间的搜索,我成功删除了一个带有表单编辑的jqgrid中的行。

但是,剩下两件小事:

  • 如何在删除行的情况下重新加载网格?
  • 如果行无法删除,如何显示信息及其原因?

我试图在事件“afterSubmit”中搜索传递给函数的参数,但是没有关于如何操作这些参数的真正解释。

网格的创建:

tableToGrid("#TabUser", { caption: 'Gestion des Utilisateurs', width: 'auto', height: "auto", hidegrid: false, pager:'#DivUser', rowNum:10, cellEdit: true, cellsubmit: 'remote', cellurl: 'Adminuser', colModel: [{name:'Id', editable:false, width:50}, {name:'Login', editable:false, width:150}, {name:'Nom', editable:true, width:200}, {name:'Prénom', editable:true, width:200}, {name:'Rôle', editable:true, width:80, edittype:'select', editoptions: { multiple: false, value:{ADMIN:'ADMIN',GUEST:'GUEST'}}}, {name:'Email', editable:true, width:200}], beforeSubmitCell: function(rowid, celname, value, iRow, iCol) { var rowData = jQuery(this).getRowData(rowid); var idUser= rowData['Id'];// On récupère l'Id du user en cours d'édition return {idUser:idUser}; } }); 

导航:

 $("#TabUser").navGrid('#DivUser', {edit:false,add:false,del:true,search:false},{}, {}, {width:500, url:'Adminuser', reloadAfterSubmit:true, onclickSubmit: function(param){ var sr = jQuery('#TabUser').getGridParam('selrow'); var idUser = jQuery('#TabUser').getCell(sr,'Id'); return {idUser:idUser}; }, afterSubmit: function(reponse, data) { $("#TabUser").trigger('reloadGrid'); $("#eData").click(); // clic sur "Annuler" return [true,"Supression réussie"]; } }); 

“响应”和“数据”的价值是什么? 如何重新加载网格?

使用url’Adminuser’(用java编写)在数据库中有效删除该行。

我认为你的真正问题不是删除行后重新加载网格。 将由tableToGrid创建的tableToGrid具有datatype: 'local'并且不需要从服务器重新加载数据。

你真正的问题是jqGrid 3.4.1中的错误,它在jqGrid的代码中被修复(见这里 )。 因此删除的行不会从网格中删除。 问题是代码行 :

 toarr = postdata.split(","); 

错误是postdata已经是数组而不是字符串。 因此,在行中会出现exception,并且不会执行从网格中删除行的下一行。 要解决此问题,您可以使用github中最后一个版本的jqGrid代码,也可以修改上面一行( jquery.jqGrid.src.js行号为8282)

 toarr = postdata; 

或者在这里下载jquery.jqGrid.src.js的修改版本。 之后你可以用$("#TabUser").trigger('reloadGrid');删除该行$("#TabUser").trigger('reloadGrid'); 从您的代码,所有将正常工作:请参阅演示 。

要在行的“删除”中报告服务器中的错误信息,您应该在HTTP响应中设置错误状态代码 。 您还可以定义errorTextFormat回调,该回调将服务器响应重新格式化为您要显示为错误消息的HTML代码片段。 有关其他信息,请参阅答案 , 这一个或这个 。