运用dtree组件动态生成带复选框的目录树
2017-09-30 09:58
357 查看
怎么获取数据库数据生成树,可以参考前面一节《运用dtree组件动态生成带复选框的目录树》,在这主要讲述怎么通过修改JS组件动态生成带复选框的目录树:
1.给树对象的 config 对象添加一个控制 checkbox 是否显示的属性;
[jscript]
view plain
copy
print?
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)最后加上:
[jscript]
view plain
copy
print?
if(this.config.check==true){
str+= '<input type="checkbox" id="c'+ this.obj + nodeId + '" onclick="javascript:'+this.obj+'.cc('+nodeId+')"/>';
}
3.写 checkbox 页面元素的 onclick 事件处理函数
[jscript]
view plain
copy
print?
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
.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
.id==pid){
document.getElementById("c"+this.obj+n).checked=true;
pid=this.aNodes
.pid;
bSearch= true;
break;
}
}
}while(bSearch==true);
}
}
怎么获取数据库数据生成树,可以参考前面一节《运用dtree组件动态生成带复选框的目录树》,在这主要讲述怎么通过修改JS组件动态生成带复选框的目录树:
1.给树对象的 config 对象添加一个控制 checkbox 是否显示的属性;
[jscript]
view plain
copy
print?
this.config = {
target : null,
folderLinks : true,
useSelection : true,
useCookies : true,
useLines : true,
useIcons : true,
useStatusText : false,
closeSameLevel : false,
inOrder : false,
check:true //**新加的
}
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)最后加上:
[jscript]
view plain
copy
print?
if(this.config.check==true){
str+= '<input type="checkbox" id="c'+ this.obj + nodeId + '" onclick="javascript:'+this.obj+'.cc('+nodeId+')"/>';
}
if(this.config.check==true){ str+= '<input type="checkbox" id="c'+ this.obj + nodeId + '" onclick="javascript:'+this.obj+'.cc('+nodeId+')"/>'; }
3.写 checkbox 页面元素的 onclick 事件处理函数
[jscript]
view plain
copy
print?
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
.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
.id==pid){
document.getElementById("c"+this.obj+n).checked=true;
pid=this.aNodes
.pid;
bSearch= true;
break;
}
}
}while(bSearch==true);
}
}
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 .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 .id==pid){ document.getElementById("c"+this.obj+n).checked=true; pid=this.aNodes .pid; bSearch= true; break; } } }while(bSearch==true); } }在这引用了kakarot的baidu博客里的文章(http://hi.baidu.com/kakarot_java/blog/item/0925d5178a68c2044b90a7ae.html),在这要感谢kakarot,我只是在他基础上加以改进,原先他的不足之处在于,当点中根节点时,所有的节点能选中,但当根节点的所有节点取消选中时,根节点不能自动也取消选中。
相关文章推荐
- 运用dtree组件动态生成带复选框的目录树
- 运用dtree组件动态生成带复选框的目录树
- 运用dtree组件动态生成带复选框的目录树
- 运用dtree组件动态生成目录树
- 运用dtree组件动态生成目录树
- dtree组件动态生成带复选框的目录树
- CSS生成动态目录结构:COOLjsMenuPRO组件
- 组件总结——动态生成树状目录
- 动态生成dTree和dTree传值
- 通过Ajax动态生成的页面,解决复选框,选择一次不能再选择的问题
- 关于使用Jquery动态生成页面组件的时候,单引号和双引号的注意
- 用VisualC#动态生成组件
- ASM(三) 利用Method组件动态生成方法的字节码
- Java动态生成组件
- datatable动态生成复选框
- mxml中动态生成组件的OO重写
- Bootstrap框架动态生成Web页面文章内目录的方法
- JSF动态生成组件
- jsp/servlet使用ajax动态加载dtree, dtree样式/图片修改 (java 生成dtree servlet json)
- Android动态生成组件