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 相关文章推荐
script标签属性用type还是language
Jan 21 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
Nov 03 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
Mar 02 Javascript
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 jQuery
Bootstrap Table使用整理(二)
Jun 09 Javascript
React Native中的RefreshContorl下拉刷新使用
Oct 09 Javascript
vue中的计算属性的使用和vue实例的方法示例
Dec 04 Javascript
JS实现简单的星期格式转换功能示例
Jul 23 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
微信小程序左滑删除实现代码实例
Sep 16 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 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 adodb连接不同数据库
2009/03/19 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
php生成RSS订阅的方法
2015/02/13 PHP
php递归函数怎么用才有效
2018/02/24 PHP
js类中获取外部函数名的方法与代码
2007/09/12 Javascript
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
jquery 学习之二 属性 文本与值(text,val)
2010/11/25 Javascript
js动态设置鼠标事件示例代码
2013/10/30 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
vue 引用自定义ttf、otf、在线字体的方法
2019/05/09 Javascript
VUE路由动态加载实例代码讲解
2019/08/26 Javascript
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
Python-copy()与deepcopy()区别详解
2019/07/12 Python
Python 面向对象部分知识点小结
2020/03/09 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
美国学校校服,儿童和婴儿服装:Cookie’s Kids
2016/10/14 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
了解AppleTalk协议吗
2014/04/01 面试题
小学生考试获奖感言
2014/01/30 职场文书
中考冲刺决心书
2014/03/11 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
航空学院求职信
2014/06/11 职场文书
大学生社会实践活动总结
2014/07/03 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
2014年学习委员工作总结
2014/11/14 职场文书
2015年世界无车日活动总结
2015/03/23 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
采购部2015年度工作总结
2015/07/24 职场文书
python 自动刷新网页的两种方法
2021/04/20 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android