当前位置: 首页 > 编程日记 > 正文

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

一、应用场景

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

二、项目实践


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

三、代码实现

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

[javascript] view plain copy
  1. <span style="font-size:14px;"> async:{  
  2. enable:true,  
  3. url:"../admin/scriptManager/loadNodeByID.htm",  
  4. autoParam:["id"],  
  5. dataType:"json",  
  6. },
  7. view: {
  8. selectedMulti: false  
  9. }
  10. }</span>


2、刷新方法

[javascript] view plain copy
  1. 2、刷新方法
  2. /** 
  3.      * 刷新当前节点 
  4.      */  
  5. function refreshNode() {  
  6. /*根据 treeId 获取 zTree 对象*/  
  7. var zTree = $.fn.zTree.getZTreeObj("scriptTree"),  
  8. type = "refresh",  
  9. silent = false,  
  10. /*获取 zTree 当前被选中的节点数据集合*/  
  11. nodes = zTree.getSelectedNodes();
  12. /*强行异步加载父节点的子节点。[setting.async.enable = true 时有效]*/  
  13. zTree.reAsyncChildNodes(nodes[0], type, silent);
  14. }
  15. /** 
  16.      * 刷新当前选择节点的父节点 
  17.      */  
  18. function refreshParentNode() {  
  19. var zTree = $.fn.zTree.getZTreeObj("scriptTree"),  
  20. type = "refresh",  
  21. silent = false,  
  22. nodes = zTree.getSelectedNodes();
  23. /*根据 zTree 的唯一标识 tId 快速获取节点 JSON 数据对象*/  
  24. var parentNode = zTree.getNodeByTId(nodes[0].parentTId);  
  25. /*选中指定节点*/  
  26. zTree.selectNode(parentNode);
  27. zTree.reAsyncChildNodes(parentNode, type, silent);
  28. }


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、部分后台代码

[java] view plain copy
  1. /** 
  2. * 查询工程对象 
  3. *  
  4. * @return 
  5. */  
  6. @ResponseBody  
  7. @RequestMapping("/loadNodeByID.htm")  
  8. public List<ZTreeNode> loadNodeByID(Integer id) {  
  9. List<ZTreeNode> nodes = cuScriptProjectService.loadNodesByID(id);
  10. // ZTreeNode zTreeNode = cuScriptProjectService.loadNodeByID(id);  
  11. return nodes;  
  12. }


2、
[java] view plain copy
  1. /** 
  2.  * 根据工程ID加载工程节点数据 
  3. */  
  4. @Override  
  5. public List<ZTreeNode> loadNodesByID(Integer id) {  
  6. /* 查询工程集合 */  
  7. List<CUProject> allProjects = this.cuProjectDAO.findAllProjects();  
  8. Map<Integer, List<CUProjectVO>> allPorjectList = this.buildProjectVOMap(allProjects);  
  9. /* 查询脚本集合 */  
  10. List<CUScript> allScripts = this.cuScriptDAO.findAllScripts();  
  11. Map<Integer, List<CUScriptVO>> allScriptMap = this.buildScriptVOMap(allScripts);  
  12. /* 构建ZTreeNode数据结构 */  
  13. List<ZTreeNode> treeNodeList = new ArrayList<ZTreeNode>();  
  14. loopBuildZTree(id, allPorjectList, allScriptMap, treeNodeList);
  15. return treeNodeList;  
  16. }

转载于:https://www.cnblogs.com/remember-forget/p/8461212.html

相关文章:

magento常用软件

常见问题&#xff1a; 1. 装完插件导致后台配置出现 Access denied 信息&#xff0c;需要重置账号权限&#xff0c;方可恢复正常。 2. 大多数无法安装插件时&#xff0c;请删除 /downloader/pearlib/pear.ini 文件&#xff0c;最后到 Connect Manager 里保存下设置&#…

连接惠普打印机(通过WIFI)

第一步 找到打印机型号 第二步 到惠普官方网站下载对应驱动 第三步 安装驱动 第四步 安装驱动后选择WIFI连接&#xff08;IP在打印机显示屏幕上显示&#xff0c;如果输入打印机屏幕IP连接失败&#xff1b;需要获取打印机真正的IP地址&#xff0c;在HP设备工具箱中获取&#xff…

ADO.NET的连接模式

1、连接模式&#xff1a;客户机一直保持和数据库服务器的链接&#xff0c;适合数据传输量少&#xff0c;系统规模不大、客户机和服务器在同一网络内的环境。 使用连接模式下数据访问的步骤如下&#xff1a; a、使用connection对象连接数据库 b、使用command&#xff08;命令&am…

App调用safar

/调用safar打开网页 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:"http://www.cnblogs.com/foxmin"]]; 调用app store (省略号后面加的是产品的id等一些参数) // [[UIApplication sharedApplication] openURL:[NSURL URLWithString:"i…

Spring Boot 整合Redis 实现缓存

本文提纲一、缓存的应用场景二、更新缓存的策略三、运行 springboot-mybatis-redis 工程案例四、springboot-mybatis-redis 工程代码配置详解运行环境&#xff1a;Mac OS 10.12.xJDK 8 Redis 3.2.8Spring Boot 1.5.1.RELEASE一、缓存的应用场景 什么是缓存&#xff1f;在互联网…

Sqlite3支持的数据类型 日期函数 Sqlite3 函数

Sqlite3支持的数据类型 NULL INTEGER REAL TEXT BLOB 但实际上&#xff0c;sqlite3也接受如下的数据类型&#xff1a; smallint 16 位元的整数。 interger 32 位元的整数。 decimal(p,s) p 精确值和 s 大小的十进位整数&#xff0c;精确值p是指全部有几个数(digits)大小值&…

Element el-switch 组件样式修改 将文字显示到组件内

Element el-switch 现在的样式无法将文字显示到组件内 &#xff0c;需要自己修改样式。具体如下 <el-switch:disabled"sitem.select.length-1"class"switch"v-model"sitem.or"active-color"#13ce66"inactive-color"#409EFF&qu…

jquery中输入验证中一个不错的效果

在表单的输入验证中&#xff0c;经常要当用户没能正确输入后&#xff0c;要提示“XXXX输入错误”这一类的信息&#xff0c;如何能搞到动态一点呢&#xff0c;今天发现jquery中的一个不错的效果&#xff0c;笔记之。 1 包含jquery <script src"images/jquery-1.2.6.min…

【2018.2.25】c++预习练习

学了一学期c语言之后预习c&#xff0c;一些最基础的东西做起来还是得心应手的&#xff0c;先练练手感?C primer plus 和教材同步学习&#xff0c;大概会比上学期抓瞎学习要好得多吧。 1 #include<iostream>2 int main()3 {4 using namespace std;5 cout <<…

在做项目中遇到的JS问题

name和value&#xff1a; 例如: <input type"text" name"txt"/> name用于定义这个input收到的值的变量名&#xff0c;在上面的input输入“hello",那么就有txt"hello";用于dom操作取值 在用js改变某个div属性进行传值操作时&#xff0…

用Duplex实现消息广播

http://blog.csdn.net/fangxinggood/archive/2011/01/15/6142861.aspx WCF中定义3种消息交换模式&#xff1a; 1. Request/Reply; 2. One-Way; 3. Duplex。 Request/Reply 是缺省模式&#xff0c;即同步调用。在调用服务方法后需要等待服务的消息返回&#xff0c;即便该方法返…

mongoose手动生成ObjectId

如果需要手动生成使用mongoose.Types.ObjectId()方法。 var mongoose require(mongoose); var id mongoose.Types.ObjectId();

Coolpad F61刷机解锁成功

这几天是高校开学的日子,各大运营商纷纷进驻校园,打出种种优惠,抢新鲜用户。 我一直觉得我现在的移动号码收费太贵,每个月不知不觉就是100多块,对我这个以公司为家(公司电话就是我的电话)的宅人而言,是有点夸张了。特别是和国外的运营商相比&#xff0c;如果你有朋友在国外&…

Django 数据库

一、操作数据库 Django配置连接数据库&#xff1a; 在操作数据库之前&#xff0c;首先先要连接数据库。这里我们以配置MySQL为例来讲解。Django连接数据库&#xff0c;不需要单独的创建一个连接对象。只需要在settings.py文件中做好数据库相关的配置就可以了。示例代码如下&…

MapReduce 中 UDF、UDAF、UDTF

UDF UDF只能实现一进一出的操作&#xff0c;如果需要实现多进一出&#xff0c;则需要实现UDAFUDF函数可以直接应用于select语句&#xff0c;对查询结构做格式化处理后&#xff0c;再输出内容 UDAF UDFA是用户自定义的聚类函数&#xff0c;是基于表的所有记录进行的计算操作 …

计算机网络面试知识总结1

1.TCP报头格式 TCP协议头至少20个字节 &#xff08;1&#xff09;源端口 16位&#xff0c;主要用于标志报文的返回地址&#xff0c;其中包含初始化通信的端口 &#xff08;2&#xff09;目的端口 16位&#xff0c;指明了要把数据传送到哪 &#xff08;3&#xff09;序列号 32位…

C# 导出到Excel (使用NPOI 1.2.4)

最近研究下用C#导出Excel。最后选择要用NPOI来导出。在网上看到了好多的教程啊。于是我兴奋的模仿起来了。先创建个空的excel试试吧。结果&#xff1a;提示无法将类型“NPOI.SS.UserModel.Sheet”隐式转换为“NPOI.HSSF.UserModel.HSSFSheet”。存在一个显式转换(是否缺少强制转…

Putty 工具 保存配置的 小技巧

用Putty 已经很长时间了&#xff0c;但一直被一个问题困扰&#xff0c;有时候是懒得去弄&#xff0c;反正也不怎么碍事&#xff0c;今天小研究了下&#xff0c;把这个问题解决了&#xff0c;心里也舒服了。 Putty是一个免费小巧的Win32平台下的telnet,rlogin和ssh客户端。 它的…

PyODPS 学习 实现查询数据 并更新数据

PyODPS是MaxCompute的Python版本的SDK&#xff0c;提供简单方便的Python编程接口。PyODPS支持类似Pandas的快速、灵活和富有表现力的数据结构。您可以通过PyODPS提供的DataFrame API使用Pandas的数据结果处理功能。本文用于帮助您快速开始使用PyODPS&#xff0c;并且能够用于实…

跟面向对象卯上了,看看ES6的“类”

上回我们说到ES5的面向对象&#xff0c;以及被大家公认的最佳的寄生组合式继承。时代在进步&#xff0c;在ES6中对于面向对象这个大boss理所应当地进行了一次大改&#xff0c;从原先那种比较长的写法转变为“小清新”写法。我们一起来看一下。 在ES6中是有类这个概念&#xff0…

JS数组去重精简版

看了很多人写的好几个去重方法&#xff0c;我在这里精简组合下&#xff0c;适用于已排序与未排序的数组。 废话不多说&#xff0c;上代码。 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>数组去重</title></hea…

[Buzz.Today]2011.05.25

>> VMWare的Open Source Pass - CloudFoundry VMWare推出了开源Pass&#xff1a;CloudFoundary&#xff0c;但是现在只是支持少数几种语言与环境&#xff1a;Java Spring, ROR and Node.JS。。 Source Code on GitHub: https://github.com/cloudfoundry 随便瞄了两眼&…

NeHe OpenGL第三十九课:物理模拟

NeHe OpenGL第三十九课&#xff1a;物理模拟 物理模拟简介: 还记得高中的物理吧&#xff0c;直线运动&#xff0c;自由落体运动&#xff0c;弹簧。在这一课里&#xff0c;我们将创造这一切。 物理模拟介绍 如果你很熟悉物理规律&#xff0c;并且想实现它&#xff0c;这篇文章…

max(min)-device-width和max(min)-width的区别

max-device-width和max-width的区别表现在如下几个方面&#xff1a; 1. max-device-width是设备整个显示区域的宽度&#xff0c;例如&#xff0c;真实的设备屏幕宽度。 2. max-width是目标显示区域的宽度&#xff0c;例如&#xff0c;浏览器宽度。 3. 如果使用max-device-width…

一篇文看懂Hadoop

我们很荣幸能够见证Hadoop十年从无到有&#xff0c;再到称王。感动于技术的日新月异时&#xff0c;希望通过这篇内容深入解读Hadoop的昨天、今天和明天&#xff0c;憧憬下一个十年。 本文分为技术篇、产业篇、应用篇、展望篇四部分 技术篇 2006年项目成立的一开始&#xff0c;“…

MaxCompute动态更新表中某个(多个)字段的数据

功能 MaxCompute支持了delete、update功能&#xff0c;但当您需要使用多个insert、update、delete对目标表进行批量操作时&#xff0c;需要编写多条SQL语句&#xff0c;然后进行多次全表扫描才能完成操作。MaxCompute提供的merge into功能&#xff0c;只需要进行一次全表扫描操…

字符串数组的赋值

例如:main(){chars[30]; strcpy(s,"Good News!"); /*给数组赋字符串*/ }上面程序在编译时,遇到chars[30]这条语句时,编译程序会在内存的某处留出连续30个字节的区域, 并将第一个字节的地址赋给s。当遇到strcpy( strcpy 为TurboC2.0的函数)时, 首先在目标文件的某处建…

NetBeans使用介绍(五)

第9章 Swing菜单 Swing菜单是我们经常用到的一种控件&#xff0c;NetBeans对菜单进行了很好的封装&#xff0c;是我们应用起来非常方便。下面&#xff0c;我们就来简单的了解一下Swing菜单。 菜单&#xff1a;Jmenu 菜单项&#xff1a;JmenuItem 复选菜单项&#xff1a;JcheckB…

Pycharm中如何安装python库

1首先打开pycharm工具&#xff0c;选择File中的Setting选项&#xff0c;如下图所示 2在打开的setting界面中我们点击python的解释器&#xff0c;你会看到很多导入的第三方库&#xff0c;如下图所示&#xff0c;点击最右边的加号 3在弹出的available packages界面中&#xff0c;…

LINUX下SVN命令大全

1、将文件checkout到本地目录 svn checkout path&#xff08;path是服务器上的目录&#xff09;例如&#xff1a;svn checkout svn://192.168.1.1/pro/domain简写&#xff1a;svn co2、往版本库中添加新的文件 svn addfile例如&#xff1a;svn addtest.php(添加test.php)svn ad…