zTree实现节点修改的实时刷新功能


Posted in Javascript onMarch 20, 2017

一、应用场景

在实际应用中会遇到动态操作树各节点的需求,在增加树节点后如何实时动态刷新树就十分有必要了。

二、项目实践

zTree实现节点修改的实时刷新功能

比如要在test1234节点下新建子节点,首先要选中test1234节点,添加成功后,根据test1234结点的TID去后台请求对应子节点数据,实现动态刷新。删除节点类似。

三、代码实现

1、初始化时必须设置配置

<span style="font-size:14px;"> async:{ 
   enable:true, 
   url:"../admin/scriptManager/loadNodeByID.htm", 
   autoParam:["id"], 
   dataType:"json", 
  }, 
  view: { 
   selectedMulti: false 
  } 
 }</span>

2、刷新方法 

/** 
  * 刷新当前节点 
  */ 
 function refreshNode() { 
  /*根据 treeId 获取 zTree 对象*/ 
  var zTree = $.fn.zTree.getZTreeObj("scriptTree"), 
  type = "refresh", 
  silent = false, 
  /*获取 zTree 当前被选中的节点数据集合*/ 
  nodes = zTree.getSelectedNodes(); 
  /*强行异步加载父节点的子节点。[setting.async.enable = true 时有效]*/ 
  zTree.reAsyncChildNodes(nodes[0], type, silent); 
 } 
 /** 
  * 刷新当前选择节点的父节点 
  */ 
 function refreshParentNode() { 
  var zTree = $.fn.zTree.getZTreeObj("scriptTree"), 
  type = "refresh", 
  silent = false, 
  nodes = zTree.getSelectedNodes(); 
  /*根据 zTree 的唯一标识 tId 快速获取节点 JSON 数据对象*/ 
  var parentNode = zTree.getNodeByTId(nodes[0].parentTId); 
  /*选中指定节点*/ 
  zTree.selectNode(parentNode); 
  zTree.reAsyncChildNodes(parentNode, type, silent); 
 }

3、涉及的方法详解

1、$.fn.zTree.init(obj,zSetting,zNodes)zTree的初始化方法,创建zTree必须使用此方法

参数说明

obj JQuery Object用于展现zTree的DOM容器

zSetting   JSON zTree的配置数据,具体请参考 “setting 配置详解”中的各个属性详细说明

zNodes   Array(JSON)/JSON zTree的节点数据,具体请参考 “treeNode 节点数据详解”中的各个属性详细说明

返回值

zTree对象,提供操作zTree的各种方法,对于通过js操作zTree来说必须通过此对象

如果不需要自行设定全局变量保存,可以利用

2、zTreeObj.getSelectedNodes获取 zTree 当前被选中的节点数据集合

返回值

返回值 Array(JSON)当前被选中的节点数据集合

方法实例:

1. 获取当前被选中的节点数据集合

var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();

3、zTreeObj.getNodeByTId根据 zTree 的唯一标识 tId 快速获取节点 JSON 数据对象

参数:tId   String 节点在 zTree 内的唯一标识 tId

返回值:返回值   JSON tId 对应的节点 JSON 数据对象如无结果,返回 null

方法实例:

1. 获取 tId = "tree_10" 的节点数据

var treeObj = $.fn.zTree.getZTreeObj("tree");
var node = treeObj.getNodeByTId("tree_10");

4、zTreeObj.selectNode选中指定节点

参数:treeNode   JSON 需要被选中的节点数据

addFlag   Boolean

addFlag = true 表示追加选中,会出现多点同时被选中的情况

addFlag = false 表示单独选中,原先被选中的节点会被取消选中状态

setting.view.selectedMulti = false 时,此参数无效,始终进行单独选中

5、zTreeObj.reAsyncChildNodes强行异步加载父节点的子节点。[setting.async.enable = true 时有效]

参数:parentNode   JSON 指定需要异步加载的父节点 JSON 数据,

reloadType   String reloadType = "refresh" 表示清空后重新加载。reloadType != "refresh" 时,表示追加子节点处理
isSilent   Boolean 设定异步加载后是否自动展开父节点。isSilent = true 时,不展开父节点,其他值或缺省状态都自动展开。

方法实例

1. 重新异步加载当前选中的第一个节点

var treeObj = $.fn.zTree.getZTreeObj("tree");
var nodes = treeObj.getSelectedNodes();
if (nodes.length>0) {
treeObj.reAsyncChildNodes(nodes[0], "refresh");
}

4、部分后台代码

/** 
* 查询工程对象 
* 
* @return 
*/ 
@ResponseBody 
@RequestMapping("/loadNodeByID.htm") 
public List<ZTreeNode> loadNodeByID(Integer id) { 
 List<ZTreeNode> nodes = cuScriptProjectService.loadNodesByID(id); 
 // ZTreeNode zTreeNode = cuScriptProjectService.loadNodeByID(id); 
 return nodes; 
}

2、

/** 
 * 根据工程ID加载工程节点数据 
*/ 
@Override 
public List<ZTreeNode> loadNodesByID(Integer id) { 
 /* 查询工程集合 */ 
 List<CUProject> allProjects = this.cuProjectDAO.findAllProjects(); 
 Map<Integer, List<CUProjectVO>> allPorjectList = this.buildProjectVOMap(allProjects); 
 /* 查询脚本集合 */ 
 List<CUScript> allScripts = this.cuScriptDAO.findAllScripts(); 
 Map<Integer, List<CUScriptVO>> allScriptMap = this.buildScriptVOMap(allScripts); 
 /* 构建ZTreeNode数据结构 */ 
 List<ZTreeNode> treeNodeList = new ArrayList<ZTreeNode>(); 
 loopBuildZTree(id, allPorjectList, allScriptMap, treeNodeList); 
 return treeNodeList; 
}

以上所述是小编给大家介绍的zTree实现节点修改的实时刷新功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS解密入门之凭直觉解
Jun 25 Javascript
Js 随机数产生6位数字
May 13 Javascript
javascript用户注册提示效果的简单实例
Aug 17 Javascript
详解Javascript动态操作CSS
Dec 08 Javascript
JS组件Bootstrap实现弹出框和提示框效果代码
Dec 08 Javascript
javascript获取网页各种高宽及位置的方法总结
Jul 27 Javascript
js获取form表单所有数据的简单方法
Aug 18 Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
May 12 Javascript
微信小程序引用公共js里的方法的实例详解
Aug 17 Javascript
Vue的土著指令和自定义指令实例详解
Feb 04 Javascript
javascript中的闭包概念与用法实践分析
Jul 26 Javascript
JavaScript分页组件使用方法详解
Jul 26 Javascript
Vue指令的钩子函数使用方法
Mar 20 #Javascript
非常实用的vue导航钩子
Mar 20 #Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
Mar 20 #Javascript
如何解决vue与传统jquery插件冲突
Mar 20 #Javascript
Vue.js路由vue-router使用方法详解
Mar 20 #Javascript
Vue插件写、用详解(附demo)
Mar 20 #Javascript
详解vue事件对象、冒泡、阻止默认行为
Mar 20 #Javascript
You might like
PHP反转字符串函数strrev()函数的用法
2012/02/04 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
一个原生的用户等级的进度条
2010/07/03 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
Javascript 中 null、NaN和undefined的区别总结
2013/04/10 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
Javascript进制转换实例分析
2015/05/14 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
2019/12/04 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
图解JS原型和原型链实现原理
2020/09/15 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
Python之自动获取公网IP的实例讲解
2017/10/01 Python
Python交互环境下实现输入代码
2018/06/22 Python
Python 忽略warning的输出方法
2018/10/18 Python
python实现在线翻译
2020/06/18 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python+opencv3.4.0 实现HOG+SVM行人检测的示例代码
2021/01/28 Python
CSS3使用border-radius属性制作圆角
2014/12/22 HTML / CSS
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
苏格兰在线威士忌商店:The Whisky Barrel
2019/05/07 全球购物
某某同志考察材料
2014/05/28 职场文书
反四风对照检查材料思想汇报
2014/09/16 职场文书
2014教师教育实践活动对照检查材料思想汇报
2014/09/21 职场文书
刑事起诉书范文
2015/05/19 职场文书
2016年秋季运动会广播稿
2015/12/21 职场文书
医学会议开幕词
2016/03/03 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Android开发 使用文件储存的方式保存QQ密码
2022/04/24 Java/Android