问题描述
树形列表,采用递归来取数据,选择父亲目录的checkbox,同时也要选择其所有的下属的子孙目录代码如下:红色部分为增加的代码,谢谢了publicstaticStringshowGroupTree(GroupcurrentGroup,IteratoriterGroup,intlayer,longselectedGroupID,Stringurl){IteratoriterChildGroup=GroupManager.getChildNoDel(currentGroup);if(iterChildGroup==null)return"";StringBuffersbuf=newStringBuffer();GroupchildGroup=null;Groupgroup=null;StringgroupName="";if(iterGroup.hasNext())childGroup=(Group)iterGroup.next();while(iterChildGroup.hasNext()){group=(Group)iterChildGroup.next();sbuf.append("<tablewidth="95%"border="0"align="center"cellpadding="0"cellspacing="0">");sbuf.append("<tr>");for(inti=0;i<layer;i++)sbuf.append("<tdwidth='1%'><imgsrc='images/blank.gif'width='12'height='5'border='0'></td>");sbuf.append("<tdwidth='1%'><inputtype='checkbox'></td>");if(selectedGroupID==group.getId())sbuf.append("<tdwidth='").append((100-layer)).append("%'align='left'>");elsesbuf.append("<tdwidth='").append((100-layer)).append("%'align='left'>");groupName=group.getName();if(groupName.length()>14)groupName=groupName.substring(0,14)+"…";if(group.getLayer()<8)sbuf.append("<aname="").append(group.getId()).append(""></a>").append(group.isHasChild()?"<imgsrc='../images/indexleft_03.gif'> ":" ").append("<ahref='").append(url).append("?groupID=").append(group.getId())./*append("#").append(group.getId()).*/append("'class='CCS_tree'>").append(groupName).append("</a>");elsesbuf.append(/*group.isHasChild()?"1":"2"+*/group.getName());sbuf.append("</td>");sbuf.append("</tr>");sbuf.append("</table>");if(childGroup!=null&&group.getId()==childGroup.getId())sbuf.append(showGroupTree(childGroup,iterGroup,layer+1,selectedGroupID,url));}returnsbuf.toString();}
解决方案
解决方案二:
没看明白。。。
解决方案三:
父checkbox的子目录的的name=“相同”<scripttype="text/javascript">vararry=document.getElementsByName("相同");for(vari=0;i<arry.length;i++){arry[i].checked=true;//不打勾arry[i].checked=false;}</script>LZ的代码太多了自己在JAVA代码里加吧
解决方案四:
这是客户端业务逻辑,最好用javascript来写,服务器端生成所需的数据即可。下面是我写的,把数据部分替换成相应的服务器端代码即可:<html><head><scripttype="text/javascript">vardata=[{name:"中国",children:[{name:"北京",children:[{name:"宣武区"},{name:"崇文区"}]},{name:"上海",children:[{name:"宝山区"},{name:"黄浦区"},{name:"静安区"},{name:"卢湾区"}]}]}];functionshowSelectTree(domObj,d,parent){for(vari=0;i<d.length;i++){varcheckboxWrapper=document.createElement("div");checkboxWrapper.className="tree_node";varcheckbox=document.createElement("input");checkbox.type="checkbox";checkbox.onclick=selectChildren;checkbox.chldrn=[];checkboxWrapper.appendChild(checkbox);varcheckboxLabel=document.createElement("span");checkboxLabel.innerHTML=d[i].name;checkboxWrapper.appendChild(checkboxLabel);domObj.appendChild(checkboxWrapper);if(parent&&parent.chldrn)parent.chldrn.push(checkbox);if(d[i].children)showSelectTree(checkboxWrapper,d[i].children,checkbox);}}functionselectChildren(){if(this.chldrn){for(vari=0;i<this.chldrn.length;i++){if(this.chldrn[i].type=="checkbox"){this.chldrn[i].checked=this.checked;this.chldrn[i].onclick();}}}}</script><styletype="text/css">.tree_node{display:block;padding-left:10px;}</style></head><bodyonload="showSelectTree(document.getElementById('tree'),data);"><divid="tree"></div></body></html>
解决方案五:
大家帮帮忙,我现在可以取得每个部门的层级以及部门ID,就是不知道怎么用递归写这个javascript方法,楼上的先谢谢了,我把我的代码贴出来,大家帮我看看啊,很急的,先谢谢了。。。
解决方案六:
publicstaticStringshowGroupTree(GroupcurrentGroup,IteratoriterGroup,intlayer,longselectedGroupID,Stringurl){IteratoriterChildGroup=GroupManager.getChildNoDel(currentGroup);if(iterChildGroup==null)return"";StringBuffersbuf=newStringBuffer();GroupchildGroup=null;Groupgroup=null;StringgroupName="";if(iterGroup.hasNext())childGroup=(Group)iterGroup.next();while(iterChildGroup.hasNext()){group=(Group)iterChildGroup.next();sbuf.append("<tablewidth="95%"border="0"align="center"cellpadding="0"cellspacing="0">");sbuf.append("<tr>");for(inti=0;i<layer;i++)sbuf.append("<tdwidth='1%'><imgsrc='images/blank.gif'width='12'height='5'border='0'></td>");sbuf.append("<tdwidth='1%'><inputtype='checkbox'name='check_").append(layer).append("_").append(group.getId()).append("'onclick='javascript:allSelect(this.value,").append(layer).append(")'value='").append(group.getId()).append("'></td>");if(selectedGroupID==group.getId())sbuf.append("<tdwidth='").append((100-layer)).append("%'align='left'>");elsesbuf.append("<tdwidth='").append((100-layer)).append("%'align='left'>");groupName=group.getName();if(groupName.length()>14)groupName=groupName.substring(0,14)+"…";if(group.getLayer()<8)sbuf.append("<aname="").append(group.getId()).append(""></a>").append(group.isHasChild()?"<imgsrc='../images/indexleft_03.gif'> ":" ").append("<ahref='").append(url).append("?groupID=").append(group.getId())./*append("#").append(group.getId()).*/append("'class='CCS_tree'>").append(groupName).append("</a>");elsesbuf.append(/*group.isHasChild()?"1":"2"+*/group.getName());sbuf.append("</td>");sbuf.append("</tr>");sbuf.append("</table>");if(childGroup!=null&&group.getId()==childGroup.getId())sbuf.append(showGroupTree(childGroup,iterGroup,layer+1,selectedGroupID,url));}returnsbuf.toString();}
解决方案七:
functionallSelect(obj,num){}
解决方案八:
应楼主要求重写的,贴下边儿:<scripttype="text/javascript">//initializerelationsfunctioninitRelations(){//getallcheckboxesvarallInputs=document.getElementsByTagName("input");varallCheckBoxes=[];for(vari=0;i<allInputs.length;i++)if(allInputs[i].type=="checkbox"&&allInputs[i].id.indexOf("check_")>-1){allInputs[i].dbId=allInputs[i].id.split('_')[2];allInputs[i].chldrn=[];allCheckBoxes.push(allInputs[i]);}//findchildrenforeachcheckboxfor(vari=0;i<allCheckBoxes.length;i++)for(varj=0;j<allCheckBoxes.length;j++)if(allCheckBoxes[j]!=allCheckBoxes[i]&&allCheckBoxes[j].id.indexOf(allCheckBoxes[i].dbId)>-1)allCheckBoxes[i].chldrn.push(allCheckBoxes[j]);//setclickactionforeachcheckboxfor(vari=0;i<allCheckBoxes.length;i++)allCheckBoxes[i].onclick=updateChildren;}functionupdateChildren(){for(vari=0;i<this.chldrn.length;i++){this.chldrn[i].checked=this.checked;this.chldrn[i].onclick();}}window.onload=initRelations;</script><div><inputtype="checkbox"id="check_1_10051242"name="check_1_10051242">综合部</div><div> <inputtype="checkbox"id="check_2_10051229_10051242"name="check_2_10051229">test</div><div> <inputtype="checkbox"id="check_3_10051236_10051229"name="check_3_10051236">test</div>
解决方案九:
收藏
解决方案十:
支持,顶下七楼
解决方案十一:
学习中
解决方案十二:
学习中…………
解决方案十三:
学习下子..代码好长慢慢看下!
解决方案十四:
不懂