2013-05-01 51 views
1

我正在使用jqGrid中的行編輯工具進行內聯編輯,然後將數據保存在網格中(即,使用「clientArray」for該網址)。我正在使用「onSelectRow」函數將選擇行置於編輯模式。jqgrid saveRow在編輯模式下行失敗時,另一行進入編輯模式

當通過保存按鈕保存該行時,該邏輯正常工作,但當第一行仍處於編輯模式時單擊另一行時,爲第一行調用saveRow函數不會保存更改,並且行字段恢復到其先前的值。

我已經試過這兩個有和沒有「beforeSelectRow」功能。我如何在這種情況下正確保存行更改?

這裏的邏輯:

var iRow; 

... 

beforeSelectRow: function (id, e) { 
    if (id != null) { 
     if (iRow != null && iRow != id) { 
      SaveRow(); 
     } 
    } 
    return true; 
}, 

onSelectRow: function (id, status, e) { 
    if (id != null) { 
     if (iRow != null && iRow != id) { 
      SaveRow(); 
     } 
     if (iRow == null) { 
      iRow = id; 
      $("#GridMain").jqGrid("editRow", id, false); 
      $("#RowPanel").show(); 
     } 
    } 
} 

function SaveRow() { 
    // Save the current row if it was being edited 
    if (iRow != null) { 
     $("#GridMain").jqGrid("saveRow", iRow, { url: "clientArray" }); 
     $("#RowPanel").hide(); 
     iRow = null; 
    } 
} 

回答

0

您應該檢查兩件事情:

  1. 檢查iRow是正確的。如果在調用SaveRow時需要保存的行仍然可編輯,您應該可以通過調用以下命令來獲取行ID,而無需保留全局變量: iRow = $('tr [aria-selected = true]',$(「#GridMain」))。attr('id'); //你有沒有正確的ID?

  2. 如果使用客戶端排序,請檢查您的列模型中是否至少有一列設置爲鍵。例如,如果您有一個隱藏的Id列,則應該如下設置: {name:'Id',index:'Id',label:'Id',editable:false,hidden:true,key:true}

另外,從我在代碼中看到的您正在使用「#RowPanel」行來編輯值?如果是這樣的話,您可能需要將編輯後的值發送回Save上的網格。否則,在編輯和保存時,您不需要顯示和隱藏任何內容。

希望這會有所幫助!

相關問題