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实现节点修改的实时刷新功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • 基于cookie实现zTree树刷新后展开状态不变

    基于cookie实现zTree树刷新后,展开状态不变. 1.除了引用jQuery和zTree的JS外,引用cookie的JS: <script type="text/javascript" src="~/Scripts/jquery-treeview/lib/jquery.cookie.js"></script> 2.JS代码: $(function () { //ztree设置 var setting = { data: { simpleD

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

    一.应用场景 在实际应用中会遇到动态操作树各节点的需求,在增加树节点后如何实时动态刷新树就十分有必要了. 二.项目实践 比如要在test1234节点下新建子节点,首先要选中test1234节点,添加成功后,根据test1234结点的TID去后台请求对应子节点数据,实现动态刷新.删除节点类似. 三.代码实现 1.初始化时必须设置配置 <span style="font-size:14px;"> async:{ enable:true, url:"../admin/s

  • AngularJs实现聊天列表实时刷新功能

    昨天在做app的聊天列表时,遇到了一个问题,消息监听器监听到了一个新的消息,但是如果这时已经处于消息列表的页面那么消息列表并不会及时更新. 我的想法是在service层中的监听器方法里,当监听到了一个新的消息,那么就在根作用域中发出一个广播,告诉controller层需要去获取最新的消息列表了. service层中发出广播: controller层中接听广播: rootScope是所有scope的父级 它的广播(broadcast)和监听(on) 可以在无交集的controller间使用 sco

  • bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能

    最近由于项目需求,要实现一个前端文本编辑框,附带图片上传实时查看的功能.比较了网上的几款插件,首先是百度的UEitor,发现该框架过于庞大,一个小框架引入如此多的文件并不是我想看到的:其次是jQuery的easyUI,虽然个人版的是免费的,但是项目属于公司业务,似乎用商业版的框架并不妥.考虑到项目的前端主要就是在bootstrap的基础上构建起来的,最终选用了bootstrap-wysiwyg插件,它非常的精简,轻巧而且扩展性强. 引入bootstrap-wysiwyg并且实现文本编辑功能十分的

  • 基于Vue实现tab栏切换内容不断实时刷新数据功能

    先说一下产品需求,就是有几个tab栏,每个tab栏对应的ajax请求不一样,内容区域一样,内容为实时刷新数据,每3s需要重新请求,返回的数据在内容区域展示,每点击一次tab栏需停止其他tab栏ajax请求,防止阻塞,首次加载页面的时候又不能5个ajax同时请求,只需要请求第一个就好 也没有必要建立5个区域,控制显示隐藏,浪费性能,业务代码就不贴了,把大概原理的代码贴上来 先是用jq实现了一版 <!DOCTYPE html> <html lang="en"> &l

  • Vue uni-app框架实现上拉加载下拉刷新功能

    目录 实现上拉加载更多 优化 实现下拉刷新 实现上拉加载更多 打开项目根目录中的pages.json配置文件,为subPackages分包中的商品goods_list页面配置上拉触底的距离: "subPackages": [ { "root": "subpkg", "pages": [ { "path": "goods_detail/goods_detail", "style&

  • jQuery实现对网页节点的增删改查功能示例

    本文实例讲述了jQuery实现对网页节点的增删改查功能.分享给大家供大家参考,具体如下: 前面介绍过<JavaScript针对网页节点的增删改查用法>,其实JavaScript对DOM的操作已经总结了很久的,而对于jQuery对网页节点的操作,虽然一直在用,但一直没有好好总结一下,实在是不应该. 下面举同样的例子来说明这个问题: 如上图,提供3个按钮,1个下拉列表,1个输入框,提供增删改查的操作. 网页中最多10个节点,最少0个节点,多了不让加,少了不让减. 首先是本网页的基本布局: <

  • php+ajax实时刷新简单实例

    本文实例讲述了php+ajax实时刷新简单实现方法,分享给大家供大家参考.具体如下: ajax自动刷新好像是个很常见的问题,之前做一个网页聊天室程序也是卡在了这上面,经过了这段时间的学习,终于做出了一个可以自动刷新网页的代码框架,希望正在迷茫的亲们不要像我一样走了这么多弯路 废话不多说 上代码: html部分: <html> <head> <script type="text/javascript"> function loadXMLDoc()//a

  • Android RecyclerView 上拉加载更多及下拉刷新功能的实现方法

    RecyclerView 已经出来很久了,但是在项目中之前都使用的是ListView,最近新的项目上了都大量的使用了RecycleView.尤其是瀑布流的下拉刷新,网上吧啦吧啦没有合适的自己总结了一哈. 先贴图上来看看: 使用RecyclerView实现上拉加载更多和下拉刷新的功能我自己有两种方式: 1.使用系统自带的Android.support.v4.widget.SwipeRefreshLayout这个控价来实现. 2.自定义的里面带有RecyleView的控件. 使用RecycleVie

  • Android实现上拉加载更多以及下拉刷新功能(ListView)

    首先为大家介绍Andorid5.0原生下拉刷新简单实现. 先上效果图: 相对于上一个19.1.0版本中的横条效果好看了很多.使用起来也很简单. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" and

  • php实时倒计时功能实现方法详解

    本文实例讲述了php实时倒计时功能实现方法.分享给大家供大家参考,具体如下: 这几天公司要做一个限时购物的功能.这就要做到倒计时,要有实时的倒计时. 要求: 1) 要有小时分钟秒的实时倒计时的显示 2)用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准) 其实这和很多的考试等系统的时间限制功能同样的要求. 解决思路: 1)总不能用ajax每秒都获取服务器时间吧. 所以实时倒计时一定要用javascript实现.这很简单.网上一大把的例子. 2)现在问题是解决用户端修改日期时间对

随机推荐