解决zTree某一级新增或者删除一个子节点后如何设置节点选中,数据刷新

我们假设要操作的树就是下图这个。
这里写图片描述

1 给wwwr节点新增子节点 666

操作及效果:选中节点wwwr,点击新增,新增后刷新树能看到新增上了子节点666,父节点wwwr仍然保持选中状态。
思路:选中wwwr,就把这个节点的id保存为全局全局的变量。等刷新树后(更新数据后)通过这个全局的id能定位到这个父节点,进而选中。
代码:

//1.保存节点为全局变量(点击父节点时的事件)
    /*树的双击或确认*/
      treeComfirm:function(){
              var treeObj = $.fn.zTree.getZTreeObj(treeId);
              var node = treeObj.getSelectedNodes()[0];
             parentId=node.id;
             parentCode=node.code;
     },
//2.移除父节点的值并将父节点属性设置为父节点
var treeObj = $.fn.zTree.getZTreeObj(treeId);
treeObj.selectNode(selectNode);
treeObj.removeChildNodes(selectNode);
selectNode.isParent = true;
treeObj.updateNode(selectNode);
viewModel.events.expand();
treeObj.expandNode(selectNode, true, true, true);

2.选中父节点wwwr删除一个子节点666

操作及效果:选择wwwr,删除子节点666,删除后还是选择父节点,同时刷新父节点,看到666被移除。
代码:

1.也是要保存父节点。同上一步一样。
2.选中父节点后,移除子节点,在更新,并咱开这个父节点。
var treeObj = $.fn.zTree.getZTreeObj(treeId);
var selectNode = treeObj.getNodeByParam("id", parentId, null);
treeObj.selectNode(selectNode);
treeObj.removeChildNodes(selectNode);
selectNode.isParent = true;
treeObj.updateNode(selectNode);
viewModel.events.expand();
treeObj.expandNode(selectNode, true, true, true);

3.选择子节点666并删除

操作及效果:选中子节点666,删除后,选中改为父节点,并展开父节点
代码:

1.也是要保存父节点。同上一步一样。
2.由子节点找到父节点,然后移除父节点的这个选中的子节点。
var treeObj = $.fn.zTree.getZTreeObj(treeId);
var selectNode = treeObj.getNodeByParam("id", parentId, null);
/*说明删除的就是节点,要找到父节点,刷新父节点*/
var parentNode=selectNode.getParentNode();
parentNode.isParent = true;
treeObj.updateNode(parentNode);
treeObj.selectNode(parentNode);
treeObj.removeNode(selectNode);

猜你喜欢

转载自blog.csdn.net/zhanglf02/article/details/80928260