2014-07-17 56 views
0

在我們的項目中,我們選擇在編輯模式下的控制,對改變事件一樣適用:的jqGrid登記在編輯模式下對控件的事件與細胞編輯

var rowSelector = '#' + rowid + '_'; 
var controlSelector = rowSelector + columnName 
var $(controlSelector).change(function() { 
      //code here 
    } 

的問題是現在,隨着一些更大的重構(單元格編輯,使用格式化程序等)內部控制的ID格式不是rowid_columnName格式,而是使用序列號代替rowid。因此,例如選擇元素具有id="1_ColumnName"代替"90433_ColumnName"(90433是的tr的ID) 這實際上帶來了一些問題:

  1. 如何內部控制應正確選擇(通過jqGrid的API)?
  2. 什麼可能是使用序列號而不是rowid來製作jqGrid的原因?
  3. 這是甚至正確的方法註冊更改事件的下拉?在cellEdit:true上應該做什麼事情?

回答

1

如果以錯誤的方式填充網格,問題通常存在。重要的是要明白,jqGrid 總是分配id屬性到網格的每一行(至<tr>)。所以你必須通知jqGrid它應該在哪裏獲得輸入數據的值。如果使用具有命名屬性的項目數組作爲jqGrid的輸入,並且id具有例如_myId值,則應使用jsonReader: {id: "_myId", repeatitems: false}。或者,您可以在colModel的另一個案例中列出您的id值。在這種情況下,您可以將key: true屬性添加到colModel中列的定義中。在這種情況下,您不需要使用jsonReaderid屬性。我不明白change你包括的代碼。您不需要典型地使用這種類型的代碼。 editoptionsdataEvents會是更好的選擇。

+0

謝謝,奧列格。這給了我很多必要的信息,如何繼續解決curret問題。使用這個變化事件是因爲我們對選定的值做了一些specila邏輯。我很確定這是錯誤的方法,所以我會檢查dataEvents。 問題1呢?在編輯模式下獲得tr的內部輸入的任何優先方式? –

+0

@theberserker:不客氣!你現在有'90433_ColumnName'作爲'id'嗎?對不起,但我不明白你的問題。 「內部控制」下的意思是什麼?你目前有什麼問題? '應如何正確選擇內部控制?'不要描述你真正需要的東西。您可以定義許多[回調](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:cell_editing#events),以便您的回調函數將被調用,並在單元編輯過程中通知您或向您詢問某些內容。 – Oleg

+0

不,設置ID明確不適合我。其實沒有什麼改變。我們的ID列在之前被標記爲'key:true',就是這樣 - 沒有任何問題。在新舊代碼的差異中看不到任何剎車:[jqGenerator_new](https://www.dropbox.com/s/p1t0v2t84lxewq9/jqGenerator_new.html)[jqGenerator_old](https://www.dropbox.com/ s/p7dewio6iyul75u/jqGenerator_old.html) –