2013-10-01 120 views
1

任何人都可以幫助我在jqgrid內聯編輯後獲得ajax響應嗎?以下是我在jqgrid中的代碼,並且我不知道如何在內聯編輯後獲得ajax成功響應。jqgrid內聯編輯獲取ajax成功響應

我嘗試過使用「loadComplete」,「gridComplete」和「afterComplete」。 這些工作只有在網格加載後,但不是在編輯單元格後。

jQuery('#grid').jqGrid({ 
      "width": "640",   
      "hoverrows": true, 
      "viewrecords": false, 
      "gridview": true, 
      "url": "es.php", 
      "editurl": "es.php", 
      "cellurl": "es.php", 
      "rowNum": 10, 
      "rowList": [10, 20, 30], 
      "sortname": "id", 
      "datatype": "json", 
      "colModel": [{ 
       "name": "employee", 
       "sortable": false, 
       "index": "employee", 
       "editable": true, 
       "editrules": { required: true } 
      }, { 
       "name": "age", 
       "index": "age", 
       "sortable": false, 
       "editable": true, 
       "editrules": { required: true } 
      }, { 
       "name": "actions", 
       "formatter": "actions", 
       "editable": false, 
       "sortable": false, 
       "resizable": false, 
       "delbutton" : false, 
       "fixed": true, 
       "width": 60, 
       "formatoptions": { 
        "keys": true, 
        "delbutton" : false, 
        "delOptions": {}, 
       } 
      }, { 
       name: 'id', 
       index: 'id', 
       "key": true, 
       hidden: true, 
       viewable: true, 
       editrules: { 
        edithidden: true 
       }, 
        "editable": false 
       } 
      ], 
      "postData": { 
       "oper": "fsgrid" 
      }, 
      "prmNames": { 
       "page": "page", 
       "rows": "rows", 
       "sort": "sidx", 
       "order": "sord", 
       "search": "_search", 
       "nd": "nd", 
       "id": "id",    
       "searchField": "searchField", 
       "searchOper": "searchOper", 
       "searchString": "searchString", 
       "oper": "oper", 
       "query": "grid", 
       "addoper": "wsadd", 
       "editoper": "wsedit", 
       "excel": "excel", 
       "subgrid": "subgrid", 
       "totalrows": "totalrows", 
      }, 
      "loadError": function(xhr, status, err) { 
       try { 
        jQuery.jgrid.info_dialog(jQuery.jgrid.errors.errcap, '<div class="ui-state-error">' + xhr.responseText + '</div>', jQuery.jgrid.edit.bClose, { 
         buttonalign: 'right' 
        }); 
       } catch (e) { 
        alert(xhr.responseText); 
       } 
      }, 
      "pager": "#pager", 
      beforeShowForm: function(form) { 
       $(".ui-inline-del").remove(); 
      }, 
     }); 

     jQuery('#grid').jqGrid('navGrid', '#pager', { 
       "edit": false, 
       "add": true, 
       "del": false, 
       "search": false, 
       "refresh": false, 
       "view": false, 
       "excel": false, 
       "pdf": false, 
       "csv": false, 
       "columns": false 
      });  

隨着上述,一切工作正常。但是內聯編輯完成後,我不知道如何獲得ajax響應。更重要的是,我對jqgrid非常陌生。我想,我正在使用非常基本的jqgrid代碼。所以請建議我獲得迴應。

回答

2

如何使用內聯編輯有很多方法。您使用內部使用內聯編輯的formatter: "actions"。所以你可以在formatoptions裏指定內聯編輯的選項。例如,要在內聯編輯後處理成功響應,您可以指定onSuccess具有相同參數的回調,如successfunceditRow。回調onError可以與editRowerrorfunc相同的方式使用。 The old answer爲您提供了回調用法的示例。

另一種指定successfuncerrorfunc內聯編輯回調的方法是使用$.jgrid.inlineEdit

另一種方式是jqGridInlineSuccessSaveRowjqGridInlineErrorSaveRow jQuery的事件用法:

jQuery("#grid").bind("jqGridInlineSuccessSaveRow", 
    function (e, jqXHR, rowid, options) { 
     alert("successful server response:\"" + jqXHR.responseText + "\""); 
     // in case of adding new row on the server you can return id 
     // of the new row 
     return [true, jqXHR.responseText]; 
    } 
); 

(我沒有測試的代碼,但我希望我在這裏做沒有錯誤)。

一些小言論,您發佈的代碼:您可以從選項jqGrid的列表中刪除beforeShowForm回調。該回調可用於表單編輯的情況,並應在其他地方使用。

還有一個備註:您可以刪除不需要的隱藏id列,如果你填寫正確的jqGrid。要明白,jqGrid的分配id屬性網格的每一行(以<tr>元素)是很重要的。 id屬性的值是rowid。如果允許編輯數據,則存在隱藏的id列可能只會產生更多問題。