free-jqgrid treegrid叶节点单击事件

问题描述:

我想捕获一个treegrid叶节点的点击事件,以触发一个free-jqGrid gridview的另一个实例的刷新。我正在使用free-jqGrid 4.13.2。我查看了treegrid的源代码,但没有看到在单击叶节点时触发的函数。free-jqgrid treegrid叶节点单击事件

我已经尝试在gridview中使用自定义格式化程序,用刷新gridview的onclick事件替换具有div的cellvalue。它第一次工作(它刷新gridview),但之后,它没有,我看到的唯一的东西是gridview工具栏中的图标每次点击treegrid叶节点时都会重复。

树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