一个简单的dhtmlxTree实现
2017-09-20 20:06
357 查看
最近一直在做后台的一些管理系统,用到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设为随机数。
源代码:http://download.csdn.net/download/lazyrabbitlll/9987716
首先是页面部分:<%@ 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设为随机数。
源代码:http://download.csdn.net/download/lazyrabbitlll/9987716
相关文章推荐
- 汇编语言实现一个简单的十六进制转储使用工具
- loner_li 机试题 编写一个简单的计算器实现加减乘除:输入两个数字和一个运算符号,输出结果(注意容错性)
- 问题:关于贴友一个用js传递value默认值的简单实现
- vue-router 源码之实现一个简单的 vue-router
- 一个最简单的CLI命令行界面实现
- 用Ajax实现一个简单的进度条
- 实现一个简单的按钮实例-上下左右,左旋转,右旋转,放大缩小。
- 使用Python的Tornado框架实现一个简单的WebQQ机器人
- java实现一个简单的网络爬虫代码示例
- 一个简单的JavaScript数据缓存系统实现代码
- 一个简单词法分析器的实现代码
- 一个简单的JavaScript数据缓存系统实现代码
- 简单实现一个EventEmitter
- 一个简单的块设备驱动的实现
- 综合应用WPF/WCF/WF/LINQ之三十九:实现一个简单的DataGrid之获取某格的原始(或当前)行(或列)的Index
- 简单实现一个ArrayList
- Python实现一个简单的MySQL类
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- 【分享】分享一个基于SSH实现的简单学生选课系统(附源码)