一个简单的dhtmlxTree实现

dhtmlxTree:JavaScript树状组件的实践指南 dhtmlxTree是一个功能强大的JavaScript树形组件,广泛用于组织层次化数据和提供用户友好的界面进行导航。它不仅支持基本的节点展开/折叠操作,还可以处理复杂的交互,例如自定义节点、拖放排序以及上下文菜单等。借助dhtmlxTree,开发者能够轻松地创建动态且响应迅速的Web应用程序界面。XML(Extensible Markup Language,可扩展标记语言)是一种用于存储和传输数据的标记语言。它允许开发者自定义标签,使得数据结构具有清晰的层次性和可读性,这在树形结构中尤为重要。 阅读详情

最近一直在做后台的一些管理系统,用到dhtmlxTree的内容比较多,以前没有接触过,因此整理了一个简单的Demo(基于springMVC)。

首先是页面部分:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="STYLESHEET" type="text/css" href="/dhtmlx/dhtmlxTree/codebase/dhtmlxtree.css"> 
<script src="/dhtmlx/window/codebase/dhtmlxcommon.js"></script>
<script src="/dhtmlx/dhtmlxTree/codebase/dhtmlxtree.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.4.4.min.js"></script>
</head>
<body>
<div>
	<div id="treeboxbox_tree" style="float:left;width:300px;height:500px;background-color:#f5f5f5;border :1px solid Silver; "/>
	</div>
	<div style="margin-left:10px;float:left;width:300px;height:500px;background-color:#f5f5f5;border :1px solid Silver; ">
		<span id="message1"></span><br>
		<span id="message2"></span><br>
		<span id="message3"></span><br>
	</div>
	<input type="button" onclick="foc();" value="获取焦点">
</div>
</body>
<script type="text/javascript">
function treeclick(){
	 $("#message1").html("当前所选节点id"+tree.getSelectedItemId());
	 $("#message2").html("当前所选节点内容"+tree.getSelectedItemText());
	 //获取节点状态:0 - 没有子节点, -1 - 节点合拢, 1 - 节点展开
	 $("#message3").html("当前节点状态"+tree.getOpenState(tree.getSelectedItemId()));
}
function foc(){
	 tree.selectItem(3);
}
var tree;
tree = new dhtmlXTreeObject("treeboxbox_tree", "100%", "100%", 0); 
tree.setSkin('dhx_vista'); 
tree.setImagePath("/dhtmlx/dhtmlxTree/codebase/imgs/csh_vista/"); 
tree.setOnClickHandler(treeclick);
//加载完成后调用function
tree.loadXML("/DHTMLXTree_Demo/test/tree.do",function(){
	//获取焦点
	tree.selectItem(3);
	treeclick();
});

</script>
</html>

然后是控制器部分:

@RequestMapping
	public void tree(HttpServletResponse response){

		String xmls = initXML();
		response.setContentType("application/xml");
		response.setCharacterEncoding("UTF-8");
		// 利用Writer直接输出到页面
		PrintWriter out = null;
		try {
			out = response.getWriter();
			out.print(xmls);
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (out != null){
				out.close();
			}
		}		
	}

	//初始化一个treeXML
	public String initXML(){

		StringBuffer sb = new StringBuffer();
		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
		sb.append("<tree id=\"0\">");
		sb.append("<item text=\"").append("一级节点").append("\" open=\"1\" id=\"").append("1").append("\">\n");
		sb.append("<item text=\"").append("二级节点1(展开)").append("\" open=\"1\" id=\"").append("2").append("\">\n");
		sb.append("<item text=\"").append("三级节点1").append("\" open=\"1\" id=\"").append("3").append("\">\n");
		sb.append("</item>\n");
		sb.append("<item text=\"").append("三级节点2").append("\" open=\"1\" id=\"").append("4").append("\">\n");
		sb.append("</item>\n");
		sb.append("</item>\n");
		sb.append("<item text=\"").append("二级节点2(不展开)").append("\" id=\"").append("5").append("\">\n");
		sb.append("<item text=\"").append("三级节点3(重复id)").append("\" id=\"").append("6").append("\">\n");
		sb.append("</item>\n");
		sb.append("<item text=\"").append("三级节点4(重复id)").append("\"  id=\"").append("6").append("\">\n");
		sb.append("</item>\n");
		sb.append("</item>\n");
		sb.append("</item>\n");
		sb.append("</tree>");
		return sb.toString();
	}
实现效果大概就是这样的:

最后是一些我在学习和使用过程中根据所遇到的一些问题总结的一些经验:

1 、在设置树的节点是否展开时,只要设置了open属性,不管设为什么值,都会默认展开。所以想设置某节点下数据不展开时只需不加open属性。
2 、节点的id取值可以是字符型的。(我主要利用它来拼接来自两个数据库数据的树)。
3 、节点的id不能重复,否则会为将重复的id设为随机数。

4、tree.enableCheckBoxes(1):显示选择框
tree.enableThreeStateCheckboxes(true):允许三种选中状态

getAllCheckedBranches() :获取所有被选中节点id,包括半选中状态的节点


DhtmlxTree dhtmlx公司的系列组件包括以下几个,此处只上传的是其中的树控件: 包含dhtmlxTree(树型控件),dhtmlxTabbar(选项卡),dhtmlxGrid(数据表格),dhtmlxCombo(下拉选项),dhtmlxTreeGrid(树型表格),dhtmlxVault(文件上传控件),dhtmlxMenu(菜单),dhtmlxToolbar(工具条),dhtmlxCalendar(日历控件),dhtmlxFolders(展示台),dhtmlxColorPicker(调色板),dhtmlxWindows(窗口)。 立即下载

相关推荐

dhtmlxTree目录树增加右键菜单及拖拽排序+源码示例

完善dhtmlxTree目录树,实现以下内容: 1、右键菜单(右键菜单中包括:新建、修改、共享、删除、刷新等功能) 2、拖拽排序 教程:http://blog.youkuaiyun.com/zm2714/article/details/7936565 本压缩包内实例代码是PHP+mySQL实现,其它语言稍做修改即可实现。与宿主语言无关。实例中代码解压后,导入数据库,并配置一下conn.php的数据库帐号和密码即可浏览。 本实例是从本人项目中提取出来,其中集成了artDialog4.1.4及在框架中使用的方法及示例。artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口,非常出色。但在项目开发中,一些细节方面、框架调用、模块集成以及与IE6的兼容问题等都有一些地方需要注意和完善。该实例中集成的artDialog4.1.4已解决目前所发现的问题。对源码做了部分修改及调整,目前项目开发中正使用的对话框组件。

dhtmlXTreeObject 树实现

dhtmlXTreeObject这种树还是挺实用的,首先我觉得其配置不是特别复杂,也可以实现右键功能,异步加载等;当然,要说的是,这个不是效果特别绚的树,在此给大家仅作参考:   需导入的JS或CSS如下: &lt;link rel="stylesheet" type="text/css" href="&lt;%=request.getContextPath()%&gt;/css/dht...

我有故事你有酒? 528

dhtmlxtree.js

dhtmlxtree.jsdhtmlxtree.js

dhtmlxtree示例

    近来因项目需要,研究了一下dhtmlxtree,发现网上例子比较少,尤其是比较完整的例子。把自己做的demo整理了一下,上传上来,大家共享一下,欢迎提出改进意见。(1)db部分:create table GEC_ZYTJ(ID       VARCHAR2(36) not null,PARENTID VARCHAR2(36),TJMC     VARCH

JAVA上尉 5047

dHtmlxTreeDemo

dhtmlXTree是一个功能比较强大的树控件,基本上能满足大部分常规需求,比较好用。

Android应用隐私合规自动化检测:Frida与Camille实战指南

在移动应用安全与隐私合规领域,动态代码插桩技术已成为核心检测手段。其原理是通过运行时注入,实时监控和修改应用行为,从而绕过传统静态分析的局限。这项技术的核心价值在于能够精准捕获应用在运行时的敏感数据调用与网络传输行为,为隐私合规审计、安全测试提供直接证据。在实际应用场景中,它尤其适用于自动化检测违规收集个人信息、追踪数据流向等任务。本文聚焦于利用Frida这一动态插桩框架,结合Camille隐私合规检测工具集,构建自动化监控环境。通过注入JavaScript代码,实现对Android敏感API(如获取设备标

weixin_34254464的博客 388

一个好用的树-dhtmlXTree

dhtmlXTree是一个功能比较强大的树控件,基本上能满足大部分常规需求,比较好用。当然,在使用过程中还是发现一点点问题。下面是我整理的一些里面常用函数的说明(只有简单的说明,如果要看详细的说明,自己查看原函数去): 构造函数dhtmlXTreeObject(htmlObject, width, height, rootId)//rootId 虚拟根节点,在界面上不会显示,...

weixin_30263277的博客 319

代谢组数据分析(二十二):代谢组原始数据Zscore标准化和主成分分析(PCA)及热图

本教程介绍了使用Z-score标准化和主成分分析(PCA)进行代谢组学数据预处理和分析的方法。代谢物原始数据具有高噪声、高维小样本、高变异性和复杂相互作用关系等特点,因此在数据分析时需注意数据质量控制、参数选择、批次效应、假阳性控制等问题。Z-score标准化通过将数据转换为均值为0、标准差为1的标准正态分布,提高了数据的可比性,减少了系统误差,并适应了统计分析方法的需求。PCA则通过降维、去相关和特征提取,帮助理解数据的结构和模式。教程还详细介绍了数据预处理步骤,包括填补缺失值、设置名称和顺序等,并提供了

专注生信领域 2862

树形展示数据——dhtmlxTree的使用

在Java Web项目开发中,一般用JSP做前台数据展示,后台通过SSH框架来进行高效开发,有流程的控制,业务的处理和对数据库的各种处理,而数据则存放在Oracle等选择的数据库中。现在大家想这样一个问题,用户和什么打交道最多?很简单,用户主要是通过页面和系统打交道呢?那么数据的展示方式很多程度上决定着用户对此系统的评价。这里简单总结一下,除了html能够展示的方式其它的几种比较友好,比较实用的数

学会改变自己——才能突破 2万+

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

A1983Z的博客 1224

PCL 三维重建 基于B样条曲线的曲面重建算法

本文将介绍如何使用B样条曲线进行三维点云数据的曲面重建。B样条曲线和曲面是一种强大的数学工具,在计算机图形学、CAD设计等领域中广泛应用。通过对点云数据进行曲面拟合和优化,最终得到精确的曲面模型。本示例展示了如何利用PCL中的B样条曲线拟合算法进行三维曲面重建,并对重建结果进行可视化。

纵马踏花向自由 658

dhtmlXTreeObject 部分方法

dhtmlXTreeObject 部分方法  tree = new dhtmlXTreeObject("treeboxbox_tree", "100%", "100%", 0);//构建dhtmlXTreeObject对象  tree.setSkin('dhx_skyblue');//设置皮肤  tree.enableDragAndDrop(0);//是否允许拖放  tree.enable

坚持是世界上每个有所建树的人共有的品质! 2606

GB28181 —— 1、Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台(连接带云台摄像机)

GB28181 —— Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台

5462

dhtmlxtree 节点 展开收缩:新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开、收缩状态)...

 dhtmlxtree 节点 展开收缩通常情况我们按 +- 就实现了 展开收缩 功能,为了方便我们新增了直接点 文本内容 也 实现了 展开收缩 功能(并记住了展开、收缩状态) tree = new dhtmlXTreeObject("treeboxbox_reyo","100%","100%",0); tree.setImagePath("tree/...

weixin_34110749的博客 220

Windows 11 WSL2环境下OpenClaw部署的兼容性问题分析与解决方案研究

本文研究了OpenClaw在Windows 11 WSL2环境下的部署方案。WSL2通过无缝集成Linux与Windows系统,为OpenClaw提供了良好的运行环境,支持GPU加速和跨平台开发。文章详细分析了硬件配置要求(推荐8核CPU/16GB内存/NVMe SSD)、系统选择(Windows 11 Pro+Ubuntu 22.04)以及部署步骤,包括WSL2启用、Linux发行版安装、Python/Node.js/Redis等依赖配置。通过优化.wslconfig文件参数(如内存分

博客 2281

滑模观测器与锁相环结合应用:让电机“无感”也能精准旋转的奥秘

本文介绍了永磁同步电机无传感器控制中的滑模观测器(SMO)结合锁相环(PLL)技术。SMO通过创建虚拟电机模型,利用电流误差产生控制信号来估计反电动势;PLL则从反电动势中解码转子位置和速度信息。该组合方案兼具SMO的鲁棒性和PLL的高精度,计算量小且硬件要求低。文章详细阐述了原理、数学模型、参数整定方法及实际实现技巧,包括离散化处理、符号函数替代等优化手段,并分析了低速性能限制、抖振问题等常见挑战及解决方案。最后指出该技术未来将与人工智能、多观测器融合等方向结合发展。

汽车软件开发 195

dhtmlxtree 简单例子后台springmvc实现

1、下载dhtmlxtree 网上自己搜 2、jsp页面如下 String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>

bahaidong的专栏 1633

杰理SDK入门教程(一):编译环境的安装和程序下载

本文档提供了杰理SDK在Windows系统下的开发环境配置与代码编译指南。主要内容包括:1) 开发环境安装步骤,需下载Code::Blocks和杰理工具链;2) 编译过程中常见问题的解决方案,如安全警告提示和链接文件缺失问题;3) 代码编译流程说明,包括打开工程、连接开发板、执行编译等步骤。文档特别强调了强制升级模式的操作方法,并指出需避免点击运行/调试按钮。最后提示了杀毒软件可能误报工具链的注意事项。

qq_42014563的博客 2742

对dhtmlXTree进行的一个小扩展

<br /> <br /> <br />需求1:<br />     动态生成树形菜单,每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的URL。(框架页说明:左边是树形菜单;右边是显示页面相应信息的页面)<br /><br /> 分析:<br />     dhtmlXTree提供了很好的添加,删除节点的方法,故选择dhtmlXTree。<br />     但是dhtmlXTree不能满足"每个节点都有各自的URL地址,单击不同的节点框架页的右侧跳转到该节点所对应的UR

☆笑→莫问☆ 2850

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

dhtmlxtree 常用用法

Html代码   div id="treeboxbox_tree" style="width:200px; height:218px;background-color:#f5f5f5;border :1px solid Silver;">div>   script>   Html代码   var tree = new dhtmlXTreeObject("treeboxb

坚持是世界上每个有所建树的人共有的品质! 741

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

dhtmlXTree与json

最近才接触到dhtmlXTree,下载地址http://www.dhtmlx.com/感觉这个玩意生成树不错,粗略看了下API,其中有个loadJSONObject的方法,根据示例,只需要简单得定义Json数据对象就能很方便就能生成树:  //定义json数据对象var jsondata = ...{id:0, item:[...{id:1,text:"first"},...{id:2

社区信息化在徘徊中前进 2668

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

dhtmlxtree文档翻译

转自:http://amozon.javaeye.com/blog/50326 dhtmlxtree文档翻译(转) 页面上初始化树 刷新节点 1.refreems(itemIdList,source)仅仅刷新节点列表(不包括他们的儿子) 2.refreem(itemId) ,刷新元素的儿子.在这里自动导入将会被激活 节点排序: 你可以排序在dhtmlTree pro(必须使用dhtmlXTree_sb.js),使用以下方法: tree.s

shishi002的专栏 827

dhtmlXtree 相关资料

最近开发项目使用到了dhtmlXtree做权限设置,看了网上相关的中文资料很少,就把官方的资料翻译了下,一共分2部分,API可以参考官方文档:http://dhtmlx.com/docs/download.shtml   效果图如下(三态树): dhtmlXTree 指南与实例 主要特性 多浏览器/多平台支持 全部由JavaScript控制 动态加载

阿铮的箩筐 7382

DhtmlxTree控件实现右键菜单的方法

DhtmlxTree控件实现右键菜单的方法 免费版的dhtmlxTree不支持右键菜单dhtmlxMenu,需要在源代码dhtmlxtree.js中添加如下代码: dhtmlXTreeObject.prototype.enableContextMenu=function(menu){ if(!menu&&!menu.showContextMenu) throw new Error("错误的菜单对象

那年秋季有点冷的专栏 2874

dhtmlxtree的一个实用demo

dhtmlxtree是一个功能强大的树型菜单, 它支持ajax, xml, javascript生成树, 附件中的例子(demo/treeEx23.jsp)是一个struts产生xml文件, 然后被js脚本加载生成一颗树的例子, 更多的用法请参考 http://www.scbr.com/docs/products/dhtmlxTree/  ...

clarancepeng 300
下一篇: Spring之文件上传与下载的实现
lazyRabbit丶
博客等级 码龄10年 8粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值