运用dtree组件动态生成带复选框的目录树

怎么获取数据库数据生成树,可以参考前面一节《运用dtree组件动态生成带复选框的目录树》,在这主要讲述怎么通过修改JS组件动态生成带复选框的目录树:

1.给树对象的 config 对象添加一个控制 checkbox 是否显示的属性;

   this.config = {
     target      : null,
     folderLinks    : true,
     useSelection   : true,
     useCookies    : true,
     useLines     : true,
     useIcons     : true,
     useStatusText   : false,
     closeSameLevel : false,
     inOrder      : false,
     check:true   //**新加的
   } 

 2.修改节点对象的 toString()方法,添加...input type="checkbox"...代码;在dtree 的dTree.prototype.node = function(node, nodeId)方法的if (this.config.useIcons)最后加上:

if(this.config.check==true){
      str+= '<input type="checkbox" id="c'+ this.obj + nodeId + '" οnclick="javascript:'+this.obj+'.cc('+nodeId+')"/>';
}

3.写 checkbox 页面元素的 onclick 事件处理函数

 

dTree.prototype.cc=function(nodeId){

	var cs = document.getElementById("c"+this.obj+nodeId).checked;

	var n,node = this.aNodes[nodeId];

	var len =this.aNodes.length;

	for (n=0; n<len; n++) {

		if (this.aNodes[n].pid == node.id) {			

			document.getElementById("c"+this.obj+n).checked=cs;			

			this.cc(n); 		

		}		

	}

	if(cs==false){	

		var clicknode=node

		do{

			for(j=0;j<len;j++){			

				if(this.aNodes[j].pid==clicknode.pid&&document.getElementById("c"+this.obj+j).checked==true){				

					return;

					}

			}

			if(j==len){	

				for(k=0;k<len;k++){

					if(this.aNodes[k].id==clicknode.pid){

						document.getElementById("c"+this.obj+k).checked=false;

						clicknode=this.aNodes[k];

						break;
					}	

				}

			}

		}while(clicknode.pid!=-1);	

	}

	if(cs==true){

		var pid=node.pid;

		var bSearch;

		do{

			bSearch=false;

			for(n=0;n<len;n++){

     			if(this.aNodes[n].id==pid){

      				document.getElementById("c"+this.obj+n).checked=true;

      				pid=this.aNodes[n].pid;

      				bSearch= true;    

      				break;

     			}

    		}

   		}while(bSearch==true);

   }

}
在这引用了kakarot的baidu博客里的文章(http://hi.baidu.com/kakarot_java/blog/item/0925d5178a68c2044b90a7ae.html),在这要感谢kakarot,我只是在他基础上加以改进,原先他的不足之处在于,当点中根节点时,所有的节点能选中,但当根节点的所有节点取消选中时,根节点不能自动也取消选中。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值