DWZ框架和Ztree整合过程

本文介绍如何将dwz框架与ztree控件进行整合,包括样式调整、异步调用实现及tab跳转功能的解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前段时间老大布置任务,让我把dwz框架和ztree给整合起来,dwz是多tab形式的框架,用到jtree,但是如果树的数目很大层次很多,那就需要用到异步调用了,所以我这两周研究这两个Jquery控件的整合,终于有点成绩了,先记下来流程,以免以后忘记了。

    首先是css样式的整合,我把dwz-core.css关于tree的样式都屏蔽了,在后面加上ztree的样式,这里图片要注意路径正确,不然图片显示不了,还有就是在bin/dwz.min.css中有一段关于jTree的代码也要屏蔽,在686行左右,不然格式会错乱

/*if(tree.size()>0){
node.children(":first").wrap("<div></div>");
$(">div",node).prepend("<div class='"+(op.showSub?op.coll:op.exp)+"'></div>"+(op.ckbox?"<div class='ckbox "+checked+"'></div>":"")+(op.icon?"<div class='"+(op.showSub?op.options.folderColl:op.options.folderExp)+"'></div>":""));
op.showSub?tree.show():tree.hide();
$(">div>div:first,>div>a",node).click(function(){
var $fnode=$(">li:first",tree);
if($fnode.children(":first").isTag('a'))tree.subTree(op,op.level+1);
var $this=$(this);
var isA=$this.isTag('a');
var $this=isA?$(">div>div",node).eq(op.level):$this;
if(!isA||tree.is(":hidden")){
$this.toggleClass(op.exp).toggleClass(op.coll);
if(op.icon){
$(">div>div:last",node).toggleClass(op.options.folderExp).toggleClass(op.options.folderColl);}}(tree.is(":hidden"))?tree.slideDown("fast"):(isA?"":tree.slideUp("fast"));
return false;});
addSpace(op.level,node);
if(op.showSub)tree.subTree(op,op.level+1);}else{
node.children().wrap("<div></div>");
$(">div",node).prepend("<div class='node'></div>"+(op.ckbox?"<div class='ckbox "+checked+"'></div>":"")+(op.icon?"<div class='file'></div>":""));
addSpace(op.level,node);
if(op.isLast)$(node).addClass("last");}*/

调用过程很简单,根据ztree里面的demo就可以,主要是位置要放在

               <div class="accordion" fillSpace="sidebar">
 			<div class="accordionHeader">
					<h2>
						<span>Folder</span>界面组件
					</h2>
				</div>
				<div class="accordionContent">
					<div class="zTreeDemoBackground">
						<ul id="tree1" class="tree"></ul>
					</div>
				</div>
				<div class="accordionHeader">
					<h2>
						<span>Folder</span>流程演示
					</h2>
				</div>
			</div>
整合完后格式对了,可是不能实现tab跳转,这里有两种方法,第一种针对静态的树,可以直接在znode直接定义

        var zNodes = [ {
		id : 1,
		pId : 0,
		name : "表格页面",
		url : "Table.jsp",
		target : "navTab",
		rel : "table"
	}, {
		id : 2,
		pId : 0,
		name : "图表页面",
		url : "Fusion_pie.jsp",
		target : "navTab",
		rel : "chart"
	} ];
如果是在数据库中读取就在数据库中定义url,target和rel字段,用json字符串传入就可以了,

$.ajax({
				url: "<%=path%>/servlet/mapser",
				cache:false,
				async:false,
				dataType: "html",
				data:"servtype=1",
				success:function(data)	{	
				//alert(data);
			   	zNodes=eval("("+data+")");	
		   	
			}
我用的ztree版本比较旧,现在3.5都出来了,但是因为我找的大数量异步调用demo是基于2.5的,所以就在jquery-ztree-2.5里面修改一下地方,把target的值改为navTab,添加 setNodeRel函数,在另外两个有调用set函数的地方加上调用
//设置Target
	function setNodeTarget(treeNode) {
		var aObj = $("#" + treeNode.tId + IDMark_A);
		//aObj.attr("target", (treeNode.target || "_blank"));
		aObj.attr("target", (treeNode.target || "navTab"));
		
	}
function setNodeRel(treeNode) {
		var aObj = $("#" + treeNode.tId + IDMark_A);
		//aObj.attr("target", (treeNode.target || "_blank"));
		aObj.attr("rel",treeNode.rel );
		
	}

完成了以上修改,就基本实现了整合,当然后面如果还有问题,我继续修改该文。



最初在优快云上发了这份代码,整合ztree3.3的核心部分,详情可以参看这个地址的说明: http://download.csdn.net/detail/ohaozy/8691959 据部分朋友的意见,需要使用ztree的excheck功能,于是我重新整合ztree3.5,包括excheck,以及部分ztree美化图标。 因为优快云上资源被下载过就不能更新及删除,只好重新发一份。推荐朋友们下载这份源代码,原先下载过的朋友可以留给我邮箱或者发邮件给我:ohsozy@163.com,我单独发给你们。 压缩包是完整的jfinal+dwz的测试性小代码,直接导入myeclipse,运行DwzConfig.java,访问http://localhost:8888/admin就可以进入页面。 代码例子是JAVA的,dwz,ztree等是前台的东西,后台没有关系。不管.net还是php都通用,请根据使用的平台,修改发布WebRoot下的文件,修改admin.jsp就可以。 ztree代码已经集成到dwz.min.js,不要再次单独引入js。 使用例子: var setting = { check: { enable: true,//只有这个属性就是checkbox chkStyle: "radio", radioType: "all"//level }, data: { simpleData: { enable: true } } }; /* 要是菜单不响应点击事件,请设置url:"#" */ var zNodes =[ { id:1, pId:0, name:"菜单管理(不响应点击)",iconSkin:"pIcon01", url:"#",open:false}, { id:2, pId:1, name:"菜单2(响应点击)", iconSkin:"pIcon02",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit2",open:false}, { id:3, pId:2, name:"菜单3(不响应点击)", iconSkin:"pIcon02",url:"#", target:"navTab", rel:"articleAddEdit3",open:false}, { id:4, pId:3, name:"文章管理4", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit4"}, { id:5, pId:3, name:"弹出层", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"dialog", rel:"articleAddEdit5",mask:true,width:860,height:600}, { id:6, pId:3, name:"文章管理6", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit6"}, { id:7, pId:1, name:"文章管理7", iconSkin:"pIcon02",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit7"}, { id:8, pId:7, name:"文章管理8", iconSkin:"pIcon02", url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit8"}, { id:9, pId:8, name:"文章管理9", iconSkin:"icon04",url:"admin/articleAddEdit.html", target:"navTab", rel:"articleAddEdit9"} ]; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); }); 有问题或建议请写评论或发信。
这份DWZ代码是我个人一直使用的,DWZ对各版本IE的兼容性是比较好的,我的代码在IE6下也基本能正常使用,这是一直舍不得换其它框架的主要原因。 压缩包是完整的jfinal+dwz的测试性小代码,直接导入myeclipse,运行DwzConfig.java,访问http://localhost:8888/admin就可以进入页面。 代码例子是JAVA的,dwz,ztree等是前台的东西,后台没有关系。不管.net还是php都通用,请根据使用的平台,修改发布WebRoot下的文件,修改admin.jsp就可以。 页面集成了ztree3.3,kindeditor,My97DatePicker的使用例子。 本代码解决了DWZ集成ztree时,对于未展开的菜单点击后target无效的问题。以下是使用例子: var zNodes =[ { id:1, pId:0, name:"菜单管理(不响应点击)", url:"#",open:false}, { id:2, pId:1, name:"菜单2(响应点击)", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit2",open:false}, { id:3, pId:2, name:"菜单3(不响应点击)", url:"#", target:"navTab", rel:"articleAddEdit3",open:false}, { id:4, pId:3, name:"文章管理4", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit4"}, { id:4, pId:3, name:"弹出层", url:"articleAddEdit.html", target:"dialog", rel:"articleAddEdit5",mask:true,width:860,height:600}, { id:4, pId:3, name:"文章管理6", url:"articleAddEdit.html", target:"navTab", rel:"articleAddEdit6"} ]; $(document).ready(function(){ $.fn.zTree.init($("#treeDemo"), setting, zNodes); }); 如果要菜单不响应点击事件,请设置url:"#" 此代码处理了弹出层刷新及弹出层分页问题,这部分没有提供例子。 别怪我分数这么贵,真心的自己花了时间去测试改进,希望帮助到更多朋友。 有问题或建议请写评论或发信。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值