2012-03-18 25 views
1

经过长时间的搜索,我成功地通过表单编辑删除了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编写)被有效删除。

回答

1

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

您真正的问题是jqGrid 3.4.1中的错误,它在jqGrid的代码中已修复(请参阅here)。所以删除的行将不会从网格中删除。问题是代码the line

toarr = postdata.split(","); 

的错误是postdata已经是数组,而不是字符串。所以一行会得到异常,下一行从网格中删除行将不会被执行。为了解决这个问题,你既可以使用jqGrid的代码的最后一个版本从github或修改上述行(它有行号8282的jquery.jqGrid.src.js)以

toarr = postdata; 

或下载的jquery.jqGrid.src.jshere修改后的版本。之后,您可以从代码中删除$("#TabUser").trigger('reloadGrid');行,并且所有行都可以正常工作:请参阅the demo

要在该行的“删除”中报告来自服务器的错误信息,您应该只在HTTP响应中使用set error status code。您还可以定义errorTextFormat回调函数,将服务器响应重新格式化为要显示为错误消息的HTML代码片段。有关其他信息,请参阅the answerthis onethis

+0

感谢您对重新加载操作的很好回答:它的工作原理! 你的回答后,我发现这个问题已经被解释了;抱歉! 我会尝试现在实现te服务器信息;我会给你结果! – Finelizzyx 2012-03-21 19:27:05

+0

@Finelizzyx:不客气! – Oleg 2012-03-21 20:00:51