ztree根据ID自动展开到指定节点。

发布于 2021-11-20 15:07:12 字数 5960 浏览 883 评论 8

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
    <%
    String path = request.getContextPath();
    String type= request.getParameter("type");
    %>
<link rel="stylesheet" href="<%=path %>/wzb/portal/knowshare/css/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="<%=path %>/wzb/portal/knowshare/js/jquery-1.8.2.js"></script>
<script type="text/javascript" src="<%=path %>/wzb/portal/knowshare/js/jquery.ztree.core-3.4.min.js"></script>

<SCRIPT type="text/javascript">
var zTree;
    var setting = {
        isSimpleData: true,
        treeNodeKey: "id",         //设置节点唯一标识属性名称
        treeNodeParentKey: "pid",  //设置节点的父节点唯一标识属性名称
        nameCol: "name",           //设置 zTree 显示节点名称的属性名称,此处默认为Name
        async: {
        enable: true,//启用异步加载
        url:"<%=path %>/wzb/portal/knowshare/action/folder_action.jsp", //异步请求地址
        autoParam:["id"], //需要传递的参数,为你在ztree中定义的参数名称
        otherParam:{"type":"<%=type%>","func":"children"}
     },
     view: {
         dblClickExpand: false,
          autoCancelSelected:false,
          showLine: true,
          selectedMulti: false,
          expandSpeed: (jQuery.browser.msie && parseInt(jQuery.browser.version)<=6)?"":"fast"
     },
     edit: {
        enable: true,
        editNameSelectAll: true
        },
     data: {
      simpleData: {
      enable: true
      }
     },
 callback: {
    onAsyncSuccess: onAsyncSuccess,
    beforeClick: function(treeId, treeNode){
      var zTree = jQuery.fn.zTree.getZTreeObj("ztree");
        zTree.expandNode(treeNode);
            //调用javascript加载页面文档列表
            parent.clickFolderSearch(treeNode.type,treeNode.id);
            
      }
     }
    };
    function onAsyncSuccess(event, treeId, treeNode, msg) {
         cancelHalf(treeNode);
    }
    function cancelHalf(treeNode) {
        var zTree = jQuery.fn.zTree.getZTreeObj("ztree");
        treeNode.halfCheck = false;
        zTree.updateNode(treeNode);   //异步加载成功后刷新树节点
    }
    function dblClickExpand(treeId, treeNode) {
        return treeNode.level > 0;
    }
 jQuery(document).ready(function(){
      //以下为第一次要加载的一级节点
        jQuery.ajax({
            url: "<%=path %>/wzb/portal/knowshare/action/folder_action.jsp?func=children&id=0&type="+<%=type%>,
            type: "post",
            success:function(data){
            parent.jQuery("#fType").val(<%=type%>);
            parent.jQuery("#fId").val(0);
            var json = eval("("+data+")");
            if(json.length > 0){
                jQuery.fn.zTree.init(jQuery("#ztree"), setting, json);
            }
        }
      });
    
    });
     
</SCRIPT>

<div class="content_wrap">
    <div class="zTreeDemoBackground left">
        <ul id="ztree" class="ztree"></ul>
    </div>
</div>

以上是ztree异步树的实现。

现在有这么一个需求,就是我知道任意一个子节点的ID。

然后根据这个ID去展开目录到当前节点。

比如这样子,

我新建一个节点23.



然后确定之后,目录树自动展开节点到23这个目录.


请问该如何实现。。谢谢了~!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

梅窗月明清似水 2021-11-25 07:17:57

问题已经解决了,我采用了一个比较笨的办法。。

var nodes = treeObj.transformToArray(treeObj.getNodes());
treeObj.reAsyncChildNodes(nodes[0], "refresh");

每次得到所有的node,之后再判断我点击的文件夹对应的node ID,去刷新他的子节点。

不知道那些好的方式怎么实现的。

坚持沉默 2021-11-25 06:53:15

自动打开 和自动选中需要你在 onAsyncSuccess 触发后自行处理

酷到爆炸 2021-11-25 02:53:15

1. 利用 getNodeByParam 之类的方法可以快速找到你要展开的节点数据

2. 利用 expandNode 方法展开该节点...

Game Over....

伪装你 2021-11-25 00:39:29

他意思是展开此节点所有父节点,然后其余节点不展开。

能否归途做我良人 2021-11-24 20:13:35

1. 利用 getNodeByParam 之类的方法可以快速找到你要展开的节点数据

2. 利用 expandNode 方法展开该节点...

Game Over....

看透却不说透 2021-11-24 19:53:43

例子里有 我确定

泛泛之交 2021-11-22 18:47:24

我记得官方有例子吧?就在查找那一节.

谢绝鈎搭 2021-11-22 12:35:04

你要知道这个节点所有的parent,然后一个一个遍历加载~

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文