2016-04-15 188 views
1

我想捕獲一個treegrid葉節點的點擊事件,以觸發一個free-jqGrid gridview的另一個實例的刷新。我正在使用free-jqGrid 4.13.2。我查看了treegrid的源代碼,但沒有看到在單擊葉節點時觸發的函數。free-jqgrid treegrid葉節點單擊事件

我已經嘗試在gridview中使用自定義格式化程序,用刷新gridview的onclick事件替換具有div的cellvalue。它第一次工作(它刷新gridview),但之後,它沒有,我看到的唯一的東西是gridview工具欄中的圖標每次點擊treegrid葉節點時都會重複。

回答

1

樹jqGrid對TreeGrid節點有許多回調,但葉會被解釋爲一個簡單的數據行。因此,您必須使用beforeSelectRow,onCellSelectonSelectRow來檢測所需的點擊。該回調有rowid作爲第一個參數,您可以使用getLocalRow根據rowid獲取該行的數據。相應的代碼將非常簡單:

beforeSelectRow: function (rowid, e) { 
    var item = $(this).jqGrid("getLocalRow", rowid); 

    if (item != null && item.isLeaf) { 
     alert("The row with leaf \"" + item.name + "\" is clicked"); 
    } 
    return true; // allow row selection 
} 

The demo演示代碼。您可以使用e.target獲取有關點擊的單元格的更準確信息。例如,$(e.target).closest("tr.jqgrow>td")會讓您將jQuery包裝到點擊的<td>單元的DOM元素。

+0

謝謝奧列格!我想我沒有想到樹和網格jqGrid之間的連接。現在有道理,我將來會記住這一點。 –

+0

@JerryP:不客氣! – Oleg

+0

我們可以在網格單元格中定義ngclick事件,以便如果我們使用多個網格,它應該爲ex的每個網格表現不同,而不是alert,如果我們需要另一個屬性,我們可以將其外部化 – shv22