2012-05-31 45 views
3

我使用jqGrid和inlineNav,以便用戶可以在本地編輯/添加/刪除行,然後在完成後將所有更改提交到服務器。我希望能夠在本地添加多個新行到網格,但由於其他要求,我需要新添加的行具有唯一的ID而不是默認的new_row。此外,由於外鍵約束,我無法使用ajax調用立即在添加時保留新行。我已經嘗試以下,但ID值不會改變:我可以更改jqGrid中新添加的行的ID嗎?

<input type="hidden" id="newRowIndex" /> 

$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', { 
    edit: false, 
    addtext: "Add", 
    save: false, 
    cancel: false, 
    addParams: { 
     position: 'last', 
     addRowParams: { 
      keys: true, 
      oneditfunc: function (rowid) { 
       var newRowIndex = $("#newRowIndex").val(); 
       if (!newRowIndex) 
        newRowIndex = 1; 
       $("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', ''); 
       newRowIndex++; 
       $("#newRowIndex").val(newRowIndex); 
      } 
     } 
    } 
}); 

我只是想新添加的行的ID設置爲new_row_1,遞增爲每個新添加的行索引。這是可能的,如果是的話,如何?

解決方案

除了院長的回答,我發現它不工作在addRowParamsoneditfunc這樣做。我發現,使用的jqGrid的afterInsertRow事件的工作原理:

afterInsertRow: function (rowid, rowdata, rowelem) { 
    if (rowid == 'new_row') { 
     var newRowIndex = $("#newRowIndex").val(); 
     if(!newRowIndex) 
      newRowIndex = 1; 
     var newRowId = rowid + "_" + newRowIndex; 
     $("#new_row").attr('id', newRowId); 
     newRowIndex++; 
     $("#newRowIndex").val(newRowIndex); 
    } 
} 
+0

我有問題,使這項工作。在插入行後動態更改ID後,它不允許我立即編輯。我正在使用內聯添加。 – Marvzz

回答

相關問題