dhtmlXTreeObject 树实现

dhtmlXTreeObject这种树还是挺实用的,首先我觉得其配置不是特别复杂,也可以实现右键功能,异步加载等;当然,要说的是,这个不是效果特别绚的树,在此给大家仅作参考:

 

需导入的JS或CSS如下:

<link rel="stylesheet" type="text/css" href="<%=request.getContextPath()%>/css/dhtmlxtree.css">

<script type="text/javascript" src="<%=request.getContextPath()%>/js/dhtmlxcommon.js"></script>
<script type="text/javascript" src="<%=request.getContextPath()%>/js/dhtmlxtree.js"></script>

 

下面为部分实现:

          //功能菜单树
                  var navFucnId=<%=navFucnId%>;
              tree=new dhtmlXTreeObject("treeboxbox_tree","100%","100%","root"); 
              tree.setSkin("dhx_skyblue");
              tree.setImagePath("<%=request.getContextPath()%>/images/tree/");
              tree.setOnClickHandler(doOnClick);
              tree.loadXML("<%=request.getContextPath()%>/system/funcNodeAction!getSystemMenuFunc.do?navFuncId="+navFucnId,function(){tree.openItem("root")});
              //tree.loadXML("tree.xml",function(){tree.openItem("root")});
              function doOnClick(id){ 
                var nowStr = "";
                var setlectNode = tree.getSelectedItemId().split(",");
                var temp = tree._globalIdStorageFind(setlectNode[0]);
               // alert(temp.label);
                if(temp.parentObject.id != 0){
                while(typeof(temp.parentObject) == "object" ){
                 nowStr =  temp.label + ">>" + nowStr;
                 temp = temp.parentObject;
                }     
               
                var $now = $(window.parent.frames["mainRightFrame"].frames["currentFrame"].document).find("span#now");
                var str = $now.text().toString().substr(0,5);
               // alert(str);
                       $now.html("<font color='#36106B' >"+str+nowStr.substr(0,nowStr.length-2)+"</FONT>" );
                       
                       //把节点id等相关信息传入到当前位置页面
                     //  var $treeInfo = $(window.parent.frames["mainRightFrame"].frames["currentFrame"].document).find("span#treeInfo");
                       var $treeInfo = $(window.parent.frames["navFrame"].document).find("span#treeInfo");
                       var selectNodeId=tree.getSelectedItemId();
                       //alert(selectNodeId);
                       var hasChildren=tree.hasChildren(selectNodeId);
                       
                       var initTreeId=selectNodeId;
                       if(hasChildren==0){ 
                           //根结点
                        while(tree.getParentId(selectNodeId)!='root'){
                         var parentId=tree.getParentId(selectNodeId);
                         initTreeId=initTreeId+','+parentId;
                         selectNodeId=parentId;
                        }
                        //alert(initTreeId);
                        initTreeId=initTreeId+','+'11000000'+',99999999';
                        //alert(initTreeId);
                        $treeInfo.html("<input type='hidden' value='"+initTreeId+"' id='funcNodeId' name='funcNodeId' />");
                       }else{
                        $treeInfo.html("<input type='hidden' value='' id='funcNodeId' name='funcNodeId' />");
                       }
               }
               
               var myUrl = tree.getUserData(id,"url"); 
              // alert("myUrl="+myUrl)
               if(myUrl != undefined){
                // window.parent.frames["mainRightFrame"].frames["workAreaFrame"].location.href=myUrl;
                openPage(tree._globalIdStorageFind(setlectNode[0]).label, myUrl);
                return true;
               }
              };

 

 

注:JS写得有点乱,对大家来说,中间有些是没有用的东西

1.tree.loadXML("<%=request.getContextPath()%>/system/funcNodeAction!getSystemMenuFunc.do?navFuncId="+navFucnId,function(){tree.openItem("root")});
这个主要是加载树,去对应的后台方法将树返回,并展开根结点

2. tree.setOnClickHandler(doOnClick);  其中的doOnClick 为下面的JS方法,相当于单击树结点触发的方法
3. var myUrl = tree.getUserData(id,"url"); 这个是在树中取到当前点击节点的URL,当然,树结点的信息是后台返回的,有url对应信息
上面是我认为对使用这个树有用的地方,希望对看的朋友有帮助吧,网上有许多对其方法及属性的资料的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值