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
,onCellSelect
或onSelectRow
来检测所需的点击。该回调有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元素。
谢谢奥列格!我想我没有想到树和网格jqGrid之间的连接。现在有道理,我将来会记住这一点。 –
@JerryP:不客气! – Oleg
我们可以在网格单元格中定义ngclick事件,以便如果我们使用多个网格,它应该为ex的每个网格表现不同,而不是alert,如果我们需要另一个属性,我们可以将其外部化 – shv22