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 相关文章推荐
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
JS小功能(操作Table--动态添加删除表格及数据)实现代码
Nov 28 Javascript
js跳转页面方法实现汇总
Feb 11 Javascript
js实现人才网站职位选择功能的方法
Aug 14 Javascript
jQuery封装的屏幕居中提示信息代码
Jun 08 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
Jul 18 Javascript
JS实现手写parseInt的方法示例
Sep 24 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
Bootstrap-table使用footerFormatter做统计列功能
Sep 07 Javascript
Node.js实现批量下载图片简单操作示例
Jan 18 Javascript
jQuery实现鼠标拖拽登录框移动效果
Sep 13 jQuery
JS开发前端团队展示控制器来为成员引流
Aug 14 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实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
jQuery 白痴级入门教程
2009/11/11 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JavaScript实现自己的DOM选择器原理及代码
2013/03/04 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
jQuery实现获取动态添加的标签对象示例
2018/06/28 jQuery
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
浅谈vue的第一个commit分析
2020/06/08 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python解析发往本机的数据包示例 (解析数据包)
2014/01/16 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
python 常用的基础函数
2018/07/10 Python
Python 变量类型详解
2018/10/10 Python
python SVM 线性分类模型的实现
2019/07/19 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
keras输出预测值和真实值方式
2020/06/27 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
Discard Protocol抛弃协议的作用是什么
2015/10/10 面试题
祖国在我心中演讲稿
2014/01/15 职场文书
公司承诺书怎么写
2014/05/24 职场文书
八一建军节演讲稿
2014/09/10 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
python requests模块的使用示例
2021/04/07 Python
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers