2014-09-11 56 views
1

所以我有一個網格,其中說2行。jqGrid afterSaveCell在濾波後的網格上使用不正確的rowId

slappy, 1, 10, 100 
happy, 2, 20, 200 

我然後過濾對電網和降低列表中只有1行

happy, 2, 20, 200 

原始行1 在過濾列表。

我改變「開心」爲「pappy」並刪除過濾器。我現在有;

pappy, 1, 10, 100 
happy, 2, 20, 200 

所以這是因爲內afterSaveCell方法改變第1行1列,返回rowId1,而不是2。所以我的代碼;

afterSaveCell: function (rowid, cellname, value, iRow, iCol) { 
    alert(rowid + ":" + iRow); 
    GRID.GridData[iRow - 1][iCol - 1] = value; 
}, 

將始終失敗,因爲它正在更改錯誤行的數據。

對過濾列表進行編輯的方法是什麼?

+0

我幾乎可以肯定你沒有正確填寫網格的輸入數據。你應該包括你使用的'datatype','colModel','loadonce','jsonReader'參數。此外,網格的輸入數據(兩行數據)將是重要的知道。我想輸入數據不包含任何'id'(rowid)信息,因此jqGrid必須在網格頁面的每次填充(每個頁面上,在過濾的數據頁上)上分配id 1,2,3,...太)。 – Oleg 2014-09-11 08:19:25

回答

0

即使您在列中定義了key: true並且該列是可編輯的,jqGrid也不提供任何界面來編輯該行的屬性id。另一方面,如果保存id的列將被修改,您可以輕鬆調整id屬性。例如

afterSaveCell: function (rowid, cellname, value, iRow, iCol) { 
    if (iCol === iMyKeyColumn) { // iMyKeyColumn is the column which should be 
           // sync with rowid 
     // adjust id attribute with new id value 
     $(this.rows[iRow]).attr("id", value); // if you use idPrefix you should add 
               // it to value: this.p.idPrefix + value 
    } 
} 

一般來說這不是很好的讓用戶因爲ID必須是在HTML頁面,用戶通常不會去想ID重複的問題,唯一修改的ID值。