zTree根据json选中节点,并且设置其他节点不可选

Posted 罗知晏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了zTree根据json选中节点,并且设置其他节点不可选相关的知识,希望对你有一定的参考价值。

首先,在适配目录树时,使用checkbox形式,配置代码如下:

 

var settingCatalog = {
     check:{
         enable: true
     },
     data:{
         simpleData:{
             enable: true
         }
     }   
}

看下效果:

这时的每个节点都处于一个可选的状态(但都未选中),但在实际项目中我们可能还会遇到另外两种情况:

1、根据后台返回的json,选中指定节点(此时所有的节点仍处于可编辑的状态);

  

  代码如下:

  

  var treeObj = $.fn.zTree.getZtreeObj("categoryTree");

  for(var j = 0; j < zNodes.length; j++){

   treeObj.checkNode(treeObj.getNodeByParam("id",zNodes[j].id),true);

  }

 

   zNodes是后台获取的json数据,其中包括 id、parentId、name、deep,形式如下:

  

2、根据json,选中指定节点,所有节点为不可操作状态。

  代码如下: 

/**获取树对象*/
var treeObj = $.fn.zTree.getZTreeObj("categoryTree");
/**获取所有节点*/
var nodes = treeObj.transformToArray(treeObj.getNodes());
for(var i = 0; i < nodes.length; i++){
  for(var j = 0; j < zNodes.length; j++){
    if(nodes[i] === treeObj.getNodeByParam("id",zNodes[j].dataAuthorityId)){
      treeObj.checkNode(treeObj.getNodeByParam("id",zNodes[j].dataAuthorityId),true);
    }
  }
  nodes[i].chkDisabled = true;
}

 

  效果:

  

Tips:

实际项目中,有时需要把选中的节点以json的形式传给后台,既然要获取节点,那当然要从节点下手啦:

var json = [];
var treeObj=$.fn.zTree.getZTreeObj("categoryTree");
var nodes=treeObj.getCheckedNodes(true);                                
for(var i = 0; i < nodes.length; i++){                                           
  var obj = {};                                                                        
  obj.dataAuthorityId = nodes[i].id;
  obj.parentId = nodes[i].pId;
  obj.name = nodes[i].name;
  obj.deep = nodes[i].deep;
  json.push(obj);                         
}
json = JSON.stringfy(json); //要作为参数传给后台,别忘了序列化一下

 

看看我们得到了什么:

[{"dataAuthorityId":"00","parentId":null,"name":"京师目录体系","deep":"0"},{"dataAuthorityId":"gaozhong","parentId":"00","name":"高中","deep":"1"},{"dataAuthorityId":"gaozhong-shuxue","parentId":"gaozhong","name":"数学","deep":"2"},{"dataAuthorityId":"xiaoxue","parentId":"00","name":"小学","deep":"1"},{"dataAuthorityId":"xiaoxue-shuxue","parentId":"xiaoxue","name":"数学","deep":"2"},{"dataAuthorityId":"xiaoxue-yingyu","parentId":"xiaoxue","name":"英语","deep":"2"}]

 

水平有限,欢迎批评指正!

以上是关于zTree根据json选中节点,并且设置其他节点不可选的主要内容,如果未能解决你的问题,请参考以下文章

如何在TreeView中选中他的节点时,更改节点的背景颜色?

ztree如何设置最内层子节点为半选状态?

zTree学习日志 选中指定节点

ztree根据返回id默认勾选节点

zTree设置选中节点之后出现重复节点

jstree 如何获得选中节点的值?