树形列表,采用递归来取数据,选择父亲目录的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'> " : " ").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();
}
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'> " : " ").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();
}
<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代码里加吧
下面是我写的,把数据部分替换成相应的服务器端代码即可:<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>
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'> " : " ").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();
}
}
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> <input type="checkbox" id="check_2_10051229_10051242" name="check_2_10051229"> test</div>
<div> <input type="checkbox" id="check_3_10051236_10051229" name="check_3_10051236"> test</div>