2016-01-12 59 views
0

我有一個問題,當行處於編輯模式(inlinde編輯),用戶點擊刪除(navgrid)傳遞額外的刪除數據。jqGrid刪除行在編輯模式下,並通過其他數據

這裏是我的代碼:

.navGrid('#' + childGridPagerID, {add: false,edit: true,del: true, cancel: true, refresh: true, view: true, search:false},{}, 
       {// edit options 
         editCaption: "Exercise Special Note",template: template, 
         errorTextFormat: function (data) { 
          return 'Error: ' + data.responseText 
         }, 
       }, 
       { // del options 
        mtype:"POST", reloadAfterSubmit:true, serializeDelData: function (postdata) { 
         var selRowId = $("#" + childGridID).jqGrid ('getGridParam', 'selrow'); 
         //console.log(selRowID); 

         if ($("#"+selRowId).attr("editable") === "1") { 
          $("#" + childGridID).editRow(selRowId, false); 
          var rowdata = $("#" + childGridID).getRowData(selRowId); 
         } 
         console.log(rowdata); 

        // append postdata with any information 
        } 
       } 
    ) 

我知道的文件說,在編輯模式下,所以我試圖禁用編輯模式getRowData將無法正常工作之前,我打電話getRowData,但仍然得到HTML在控制檯日誌中,而不是真實的數據。我也看到我可以先保存行,然後刪除它之前獲取我的數據,問題是大多數字段是必需的,用戶可能會刪除行而不填寫所有的字段,這將提示用戶輸入所需的字段。

回答

1

如果我正確理解您的問題,您應該撥打restoreRowsaveRow而不是serializeDelData中的用法editRow。順便說一下,postdata包含刪除行的ID,因此您不需要使用.jqGrid ('getGridParam', 'selrow')來獲取相同的信息。修改後的代碼可能是:

serializeDelData: function (postdata) { 
    var rowId = postdata.id; // or postdata[this.p.prmNames[id]] 

    if ($("#"+rowId).attr("editable") === "1") { 
     $(this).restoreRow(rowId); 
     var rowdata = $(this).getRowData(selRowId); 
     console.log(rowdata); 
    } 

    // append postdata with any information 
    ... 

    return postdata; 
} 

到時候你可以考慮使用其他的回調來擴展信息的方式,發送到服務器。例如,onclickSubmit的目標正在提供這樣的信息。它可以返回{}或將與主要信息合併的對象。該代碼可以是這樣的

onclickSubmit: function (deleteOptions, rowids) { 
    $(this).jqGrid("restoreRow", rowids); 
    var rowData = $(this).jqGrid("getRowData", postdata); 
    return {id1: rowData.id1, id2: rowData.id2}; 
} 
+0

謝謝奧列格,但我不得不提,這是一個三級子網格的一部分,當我使用VAR ROWID = postdata.id我沒有得到真正的ID,讓我獲取rowData。當使用這種方法時,它返回行的索引(1,2,3,...)等等,但是當我使用getGridParam方法時,我得到了真正的ID,在我的情況下,它返回progGrid_1_table_d_1_1之後,我可以檢索rowData。感謝您的幫助,您是最終的主人。 – boulepick

+0

@boulepick:不客氣!如果你的列有實際的id,那麼你可以在列中輸入'key:true'。它通知jqGrid使用該值作爲rowid,並且'postdata.id'將已經是你所需要的。在這種情況下,您將刪除部分代碼。 – Oleg

相關問題