【问题标题】:how to change icon for parent node when all of its children are deleted in jqGrid Tree Grid在jqGrid Tree Grid中删除所有子节点时如何更改父节点的图标
【发布时间】:2026-02-10 21:05:02
【问题描述】:

我正在使用 jqGrid 树网格来显示一些分层数据。我必须实现删除功能,到目前为止做得很好,唯一导致问题“是当删除特定节点的所有子节点时,该节点应该成为叶节点,即它的图标应该从箭头变为叶一"

我正在使用以下代码从网格中删除节点

$trackerGrid.jqGrid('delTreeNode', actoinItemEntityId);
var record = getRowRecord(baseId);
var siblingArray = $trackerGrid.jqGrid('getNodeChildren', record);

if(!siblingArray || !siblingArray.length) {                                         

    $trackerGrid.jqGrid('collapseNode', record);
    setLeafColumnValue(baseId, false);  
}

节点删除成功,但父节点的图标没有改变,图标仍然是展开节点的图标。有人对此有任何想法吗?

【问题讨论】:

    标签: jquery jqgrid


    【解决方案1】:

    通常情况下,TreeGrid 中没有子节点的节点与叶子节点不同。您可以将节点想象为文件夹,将叶子想象为文件。即使您从文件夹中删除所有文件,它也将保留文件夹并且不会转换为文件。

    如果在您的用例中您描述的行为有意义,我建议您执行以下操作:

    • 从空节点获取当前数据。我认为您可以使用getLocalRow 通过rowid 获取本地data
    • 删除现在没有子节点的节点;
    • 然后使用addChildNode 添加新节点,数据与之前相同,但使用isLeaf: true

    如果您将拥有包含所有 TreeGrid 标准的代码,它将在 jqGrid 的下一个版本中工作。

    【讨论】: