2012-04-12 139 views
2

我是jQuery的新手,我需要在我的項目中使用jqGrid。JQGrid,編輯網址

我有一個編輯/刪除/插入問題;我只有一個URL,editurl,然後在控制器中我使用oper屬性來決定它是插入還是刪除操作。

但我想爲jqGrid中的編輯,刪除和插入操作有一個單獨的URL。你能讓我知道如何實現嗎?

客戶端代碼:

$(document).ready(function() { 
    var lastsel2; 
    var grid = jQuery("#list5").jqGrid({ 
     url: '/home1/GetUserData', 
     datatype: "json", 
     mtype: "POST", 
     colNames: ['Code', 'LoginID', 'Emailid', 'CreateDate'], 
     colModel: [ 
     // { name: 'act', index: 'act', width: 75, sortable: false }, 
         {name: 'Code', index: 'Code', width: 55, editable: true }, 
         { name: 'LoginID', index: 'LoginID', width: 90, editable: true }, 
         { name: 'Emailid', index: 'Emailid', width: 100, editable: true }, 
        { name: 'CreateDate', index: 'CreateDate', width: 100, editable: true } 
         ], 
     rowNum: 10, 
     width: 700, 
     height: 300, 
     rowList: 10, 
     pager: $("#pager2"), 
     editurl: "/home1/EditUserData", 
     onSelectRow: function (id) { 
      if (id && id !== lastsel2) { 
       if (id == "new_row") { 
        grid.setGridParam({ editurl: "/home1/InsertUserData" }); 
       } 
       else { 
        grid.setGridParam({ editurl: "/home1/EditUserData" }); 
       } 
       jQuery('#list5').restoreRow(lastsel2); 
       $("#list5_ilsave").addClass("ui-state-disabled"); 
       $("#list5_ilcancel").addClass("ui-state-disabled"); 
       $("#list5_iladd").removeClass("ui-state-disabled"); 
       $("#list5_iledit").removeClass("ui-state-disabled"); 
       lastsel2 = id; 
      } 
     }, 
     caption: "Simple data manipulation" 
    }); 
    jQuery("#list5").jqGrid('navGrid', '#pager2', { edit: false, add: false, del: true, search: false, refresh: false }, {}, {}, { url: '/home1/DeleteUserData' }); 
    jQuery("#list5").jqGrid('inlineNav', "#pager2", { edit: true, add: true, del: true, search: false, refresh: false }); 
}); 

回答

7

您可以通過選項對所有與navGrid方法的操作是這樣的:

jQuery('#list5').jqGrid('navGrid', '#pager2', { edit: true, add: true, del: true }, 
    //edit options 
    { url: '/home1/EditUserData' }, 
    //add options 
    { url: '/home1/AddUserData' }, 
    //delete options 
    { url: '/home1/DeleteUserData' } 
); 

請閱讀更herehere

UPDATE

在inlineNav方法的jqGrid的情況下總是使相同的參數集(editParams)至saveRow方法。由於編輯/添加請求會對同一個URL產生影響。你堅持檢查oper區分編輯添加。

在重裝你可以使用editParams設置aftersavefunc電網的受觸發realoadGrid這樣的:

jQuery('#list5').jqGrid('inlineNav', '#pager2', { edit: true, add: true, editParams: { 
    aftersavefunc: function(rowId, response) { jQuery('#list5').trigger('reloadGrid'); } 
}}); 

但是你應該記住,這也將導致刷新編輯後(因爲同樣的原因如上所述) - 您可以嘗試使用響應參數來區分這兩個參數。我也刪除了del,搜索和刷新代碼,因爲inlineNav沒有這些選項。

+0

感謝您的回覆,但它適用於FORM EDITING而不是INLINE EDITING,我想要進行內聯編輯。 – Meraj 2012-04-12 09:27:30

+1

@Meraj那麼你的示例代碼是使用navGrid(這是使用表單編輯設置)。您的問題中沒有任何內容表明您正在使用內嵌編輯。請更新您的代碼,以便我可以看到您如何使用內嵌編輯,以便我可以爲您提供幫助。 – tpeczek 2012-04-12 09:53:52

+0

絕對正確的答案和最後的評論+1。 – Oleg 2012-04-12 11:36:45