2012-03-18 24 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