free-jqgrid treegrid 叶子节点点击事件

free-jqgrid treegrid leaf node click event

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

我曾尝试在 gridview 中使用自定义格式化程序,将 cellvalue 替换为 div 以及将刷新 gridview 的 onclick 事件。它第一次工作(它刷新 gridview),但之后,它没有,我唯一看到的是 gridview 工具栏中的图标随着每次单击 treegrid 叶节点而复制。

Tree jqGrid 对 TreeGrid 节点有很多回调,但叶子将被解释为带有数据的简单行。因此,您必须使用 beforeSelectRowonCellSelectonSelectRow 来检测所需的点击。回调将 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 元素。