树形列表,采用递归来取数据,选择父亲目录的checkbox,同时也要选择其所有的下属的子孙目录代码如下:红色部分为增加的代码,谢谢了public static String showGroupTree(Group currentGroup, Iterator iterGroup, int layer, long selectedGroupID, String url) {
Iterator iterChildGroup = GroupManager.getChildNoDel(currentGroup);
if (iterChildGroup == null)
return "";
StringBuffer sbuf = new StringBuffer();
Group childGroup = null;
Group group = null;
String groupName = "";
if (iterGroup.hasNext())
childGroup = (Group) iterGroup.next();
while (iterChildGroup.hasNext()) {
group = (Group) iterChildGroup.next();
sbuf.append("<table width=\"95%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">");
sbuf.append("<tr>");
for (int i = 0; i < layer; i++)
sbuf.append("<td width='1%'><img src='images/blank.gif' width='12' height='5' border='0'></td>");
sbuf.append("<td width='1%'><input type='checkbox'></td>");
if (selectedGroupID == group.getId())
sbuf.append("<td width='").append((100 - layer)).append("%' align='left'>");
else
sbuf.append("<td width='").append((100 - layer)).append("%' align='left'>");
groupName = group.getName();
if (groupName.length() > 14)
groupName = groupName.substring(0, 14) + "…";
if (group.getLayer() < 8)
sbuf.append("<a name=\"").append(group.getId()).append("\"></a>").append(group.isHasChild() ? "<img src='../images/indexleft_03.gif'>&nbsp;" : "&nbsp;").append(
"<a href='").append(url).append("?groupID=").append(group.getId()).
/* append("#").append(group.getId()). */
append("' class='CCS_tree'>").append(groupName).append("</a>");
else
sbuf.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)); }
return sbuf.toString();
}

解决方案 »

  1.   

    父checkbox  的子目录的的name=“相同”
    <script type="text/javascript">
    var arry = document.getElementsByName("相同");for(var i = 0;i<arry.length;i++){
    arry[i].checked=true;
    //不打勾arry[i].checked=false;}
    </script>
    LZ的代码太多了自己在JAVA代码里加吧
      

  2.   

    这是客户端业务逻辑,最好用javascript来写,服务器端生成所需的数据即可。
    下面是我写的,把数据部分替换成相应的服务器端代码即可:<html>
     <head>
     <script type="text/javascript">
     var data = [
     {
       name:"中国",
       children:[
         {
       name:"北京",
       children:[
         {name:"宣武区"},
         {name:"崇文区"}
       ]
     },
         {
       name:"上海",
       children:[
         {name:"宝山区"},
         {name:"黄浦区"},
         {name:"静安区"},
         {name:"卢湾区"}
       ]
     }
       ]
     }
     ];
     function showSelectTree(domObj, d, parent) {
       for (var i = 0; i < d.length; i++) {
         var checkboxWrapper = document.createElement("div");
     checkboxWrapper.className = "tree_node";
     var checkbox = document.createElement("input");
     checkbox.type = "checkbox";
     checkbox.onclick = selectChildren;
     checkbox.chldrn = [];
     checkboxWrapper.appendChild(checkbox);
     var checkboxLabel = 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);
       }
     }
     function selectChildren() {
       if (this.chldrn)
       {
    for (var i = 0; i < this.chldrn.length; i++) {
     if (this.chldrn[i].type=="checkbox")
     {
     this.chldrn[i].checked = this.checked;
     this.chldrn[i].onclick();
     }
       }
       }
     }
     </script>
     <style type="text/css">
    .tree_node {
    display: block;
    padding-left: 10px;
    }
     </style>
     </head> <body onload="showSelectTree(document.getElementById('tree'), data);">
     <div id="tree"></div>
     </body>
    </html>
      

  3.   

    大家帮帮忙,我现在可以取得每个部门的层级以及部门ID,就是不知道怎么用递归写这个javascript方法,楼上的先谢谢了,我把我的代码贴出来,大家帮我看看啊,很急的,先谢谢了
      

  4.   

    public static String showGroupTree(Group currentGroup, Iterator iterGroup, int layer, long selectedGroupID, String url) {
    Iterator iterChildGroup = GroupManager.getChildNoDel(currentGroup);
    if (iterChildGroup == null)
    return "";
    StringBuffer sbuf = new StringBuffer();
    Group childGroup = null;
    Group group = null;
    String groupName = "";
    if (iterGroup.hasNext())
    childGroup = (Group) iterGroup.next();
    while (iterChildGroup.hasNext()) {
    group = (Group) iterChildGroup.next();
    sbuf.append("<table width=\"95%\" border=\"0\" align=\"center\" cellpadding=\"0\" cellspacing=\"0\">");
    sbuf.append("<tr>");
    for (int i = 0; i < layer; i++)
    sbuf.append("<td width='1%'><img src='images/blank.gif' width='12' height='5' border='0'></td>");
    sbuf.append("<td width='1%'><input type='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("<td width='").append((100 - layer)).append("%' align='left'>");
    else
    sbuf.append("<td width='").append((100 - layer)).append("%' align='left'>");
    groupName = group.getName();
    if (groupName.length() > 14)
    groupName = groupName.substring(0, 14) + "…";
    if (group.getLayer() < 8)
    sbuf.append("<a name=\"").append(group.getId()).append("\"></a>").append(group.isHasChild() ? "<img src='../images/indexleft_03.gif'>&nbsp;" : "&nbsp;").append(
    "<a href='").append(url).append("?groupID=").append(group.getId()).
    /* append("#").append(group.getId()). */
    append("' class='CCS_tree'>").append(groupName).append("</a>");
    else
    sbuf.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)); }
    return sbuf.toString();
    }
      

  5.   

    function allSelect(obj,num){
    }
      

  6.   

    应楼主要求重写的,贴下边儿:<script type="text/javascript">// initialize relations
    function initRelations() {  // get all checkboxes
      var allInputs = document.getElementsByTagName("input");
      var allCheckBoxes = [];
      for (var i = 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]);
        }  // find children for each checkbox
      for (var i = 0; i < allCheckBoxes.length; i++)
        for (var j = 0; j < allCheckBoxes.length; j++)
          if (allCheckBoxes[j] != allCheckBoxes[i] && allCheckBoxes[j].id.indexOf(allCheckBoxes[i].dbId) > -1)
            allCheckBoxes[i].chldrn.push(allCheckBoxes[j]);  // set click action for each checkbox
      for (var i = 0; i < allCheckBoxes.length; i++)
        allCheckBoxes[i].onclick = updateChildren;
    }function updateChildren() {
      for (var i = 0; i < this.chldrn.length; i++) {
        this.chldrn[i].checked = this.checked;
        this.chldrn[i].onclick();
      }
    }window.onload = initRelations;
    </script><div><input type="checkbox" id="check_1_10051242" name="check_1_10051242"> 综合部</div>
    <div>&nbsp;&nbsp;<input type="checkbox" id="check_2_10051229_10051242" name="check_2_10051229"> test</div>
    <div>&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="check_3_10051236_10051229" name="check_3_10051236"> test</div>