2012-03-05 48 views
1

jgGrid包含工具欄中的內聯添加按鈕和操作列中的保存操作按鈕。 使用遠程json數據。 如果按下保存操作按鈕來終止內聯添加並且服務器返回錯誤,則添加的行將從網格中刪除,並且輸入的行數據將丟失。 我向格式選項 添加了restoreAfterError:false,並添加了如下面代碼所示的內聯添加按鈕,但如果按下「保存操作」按鈕,那些設置將被忽略。如果在按下jqgrid中的保存操作按鈕時返回錯誤,如何保持內聯添加

如何保持行內聯添加模式,以便編輯可以在錯誤後繼續如果保存操作按鈕被按下?

colModel: [ { 
    name:"_actions", 
    formatter:"actions", 
    formatoptions:{ 
    editbutton:true, 
    keys:true, 
    // this is ignored if action column save button is pressed: 
    restoreAfterError:false, 
    delbutton:true 
    } 
} , ... 
], 
editurl: '/Grid/Edit', 
datatype: "json", 

在線添加按鈕使用補充說:

$grid.jqGrid('inlineNav', '#grid_toppager', { 
    addParams: { 
     position: "beforeSelected", 
     rowID: '_empty', 
     useDefValues: true, 
     addRowParams: { 
      keys: true, 
      // this is ignored if action column save button is pressed: 
      restoreAfterError: false, 
     } 
    }, 

    editParams: { 
      keys: true, 
      // this is ignored if action column save button is pressed: 
      restoreAfterError: false, 
    }, 

    add: true, 
    edit: false, 
    save: true, 
    cancel: true 
}); 

回答

3

我測試的設置restoreAfterError: falseaddParams.addRowParamseditParams內部和它的作品好。如果出現錯誤,在我的自定義errorfunc顯示錯誤消息之後,編輯(或新添加的行)仍處於編輯模式。我想你只有在使用formatter: 'actions'時纔會遇到問題。

如果使用formatter: 'actions',則無法直接定義restoreAfterError(至少在當前的jqGrid版本3.4.1中)。所以,我建議你的restoreAfterError默認值更改爲false

$.extend($.jgrid.inlineEdit, { 
    restoreAfterError: false 
}); 

此外,我建議你刪除從addRowParamseditParams尾隨逗號(喜歡這裏restoreAfterError: false,})。拖尾逗號被很多(但不是全部)網頁瀏覽器忽略,但仍然有錯誤。

+0

謝謝。使用答案中的代碼設置restoreAfterError不能解決問題。我在jqGrid源代碼中的2個地方更改了restoreAfterError,這就解決了這個問題。如何使'$ .extend($。jgrid.inlineEdit,{ restoreAfterError:false }); '工作或找到問題的原因?我使用的代碼從git修補inlineEdit – Andrus

+0

@Andrus:我測試了我的[演示項目]的建議(http://www.ok-soft-gmbh.com/jqGrid/jqGridExportToExcel_editerror.zip),它使用了** original jqGrid 4.3.1 **。 jqGrid 4.3.1有一些已知的錯誤,但所描述的功能正常工作。我剛剛在演示中評論了'ModifyGridData'的主要代碼,所以編輯返回總是出錯。如果我在'addParams.addRowParams'和'inlineNav'屬性的editParams'部分使用'restoreAfterError:false',或者如果我使用'$ .extend($。jgrid.inlineEdit,{restoreAfterError:false});'(參見注釋部分在Index.aspx) - 兩個作品。 – Oleg

+0

@安德魯斯:所以你應該在你修改過的jqGrid代碼中有一些問題。 – Oleg

相關問題