前言
zTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。 支持静态 和 Ajax 异步加载节点数据. 在开发中我们常需要用到树状的展示.
下载地址
zTree
静态zTree开发流程
引入资源
<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
html元素
<div>
<ul id="treeDemo" class="ztree"></ul>
</div>
JS方式一-简单json数据格式
<SCRIPT type="text/javascript">
<!--
var setting = {
data: {
simpleData: {
enable: true
}
}
};
var zNodes =[
{ id:1, pId:0, name:"父节点1 - 展开", open:true},
{ id:11, pId:1, name:"父节点11 - 折叠"},
{ id:111, pId:11, name:"叶子节点111"},
{ id:112, pId:11, name:"叶子节点112"},
{ id:113, pId:11, name:"叶子节点113"},
{ id:114, pId:11, name:"叶子节点114"},
{ id:12, pId:1, name:"父节点12 - 折叠"},
{ id:121, pId:12, name:"叶子节点121"},
{ id:122, pId:12, name:"叶子节点122"},
{ id:123, pId:12, name:"叶子节点123"},
{ id:124, pId:12, name:"叶子节点124"},
{ id:13, pId:1, name:"父节点13 - 没有子节点", isParent:true},
{ id:2, pId:0, name:"父节点2 - 折叠"},
{ id:21, pId:2, name:"父节点21 - 展开", open:true},
{ id:211, pId:21, name:"叶子节点211"},
{ id:212, pId:21, name:"叶子节点212"},
{ id:213, pId:21, name:"叶子节点213"},
{ id:214, pId:21, name:"叶子节点214"},
{ id:22, pId:2, name:"父节点22 - 折叠"},
{ id:221, pId:22, name:"叶子节点221"},
{ id:222, pId:22, name:"叶子节点222"},
{ id:223, pId:22, name:"叶子节点223"},
{ id:224, pId:22, name:"叶子节点224"},
{ id:23, pId:2, name:"父节点23 - 折叠"},
{ id:231, pId:23, name:"叶子节点231"},
{ id:232, pId:23, name:"叶子节点232"},
{ id:233, pId:23, name:"叶子节点233"},
{ id:234, pId:23, name:"叶子节点234"},
{ id:3, pId:0, name:"父节点3 - 没有子节点", isParent:true}
];
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
});
</SCRIPT>
JS方式二-标准json数据格式
<SCRIPT type="text/javascript">
<!--
var setting = { };
var zNodes =[
{ name:"父节点1 - 展开", open:true,
children: [
{ name:"父节点11 - 折叠",
children: [
{ name:"叶子节点111"},
{ name:"叶子节点112"},
{ name:"叶子节点113"},
{ name:"叶子节点114"}
]},
{ name:"父节点12 - 折叠",
children: [
{ name:"叶子节点121"},
{ name:"叶子节点122"},
{ name:"叶子节点123"},
{ name:"叶子节点124"}
]},
{ name:"父节点13 - 没有子节点", isParent:true}
]},
{ name:"父节点2 - 折叠",
children: [
{ name:"父节点21 - 展开", open:true,
children: [
{ name:"叶子节点211"},
{ name:"叶子节点212"},
{ name:"叶子节点213"},
{ name:"叶子节点214"}
]},
{ name:"父节点22 - 折叠",
children: [
{ name:"叶子节点221"},
{ name:"叶子节点222"},
{ name:"叶子节点223"},
{ name:"叶子节点224"}
]},
{ name:"父节点23 - 折叠",
children: [
{ name:"叶子节点231"},
{ name:"叶子节点232"},
{ name:"叶子节点233"},
{ name:"叶子节点234"}
]}
]},
{ name:"父节点3 - 没有子节点", isParent:true}
];
$(document).ready(function(){
$.fn.zTree.init($("#treeDemo"), setting, zNodes);
});
</SCRIPT>
异步zTree加载
前面的配置相同,在此不再阐述.主要是js不同.
异步JS
var setting = {
check: {
enable:
true
},
data : {
simpleData : {
enable :
true
}
}
};
function initTree(){
var payFreq = $(
"#payFreq").val();
var fyType = $(
'#fyType').val();
var setHzType = $(
'#setHzType').val();
$.ajax({
url :
"/demo/initTree",
data : {payFreq:payFreq,
fyType:fyType,
setHzType:setHzType
},
success:
function(object){
var nodes =
"";
$.each(object.data,
function(i,item) {
nodes+=
"{id:'"+item.id+
"', pId:'"+item.pid+
"', name:'"+item.name+
"', isParent:'"+item.isParent+
"'},";
});
var zNodes =
"["+nodes+
"]";
var json =
eval(
'(' + zNodes +
')');
zTreeInit(json);
}
});
}
function zTreeInit(json) {
$.fn.zTree.init($(
"#treeDemo"), setting, json);
var zTree = $.fn.zTree.getZTreeObj(
"treeDemo");
zTree.expandAll(
true);
setting.check.chkboxType = {
"Y" :
"ps",
"N" :
"ps" };
}
java代码
Controller层
@RequestMapping(
"initTree")
@ResponseBody
public DataMessage
initTree(String setHzType,String payFreq,String fyType){
params.put(
"setHzType", setHzType);
params.put(
"fyType", fyType);
params.put(
"fkmattr_xt", fkmattr_xt);
List<TreeInfo> treeInfos = feeTransferService.initTree(params);
return DataMessage.successData(treeInfos);
}
tree实体类
public class TreeInfo {
private String id;
private String pid;
private String name;
private String isParent;
}
说明
更多实例可以参看zTree中文文档 或参见zTree GitHub 里面更多的示例和说明
相关资源:python入门教程(PDF版)