<script type="text/javascript">
//当前table的父table所在的checkbox
function GetParentCheckBox(node) {
while (node.tagName != "TABLE") {
node = node.parentNode;
}
while (node.tagName != "DIV") {
node = node.parentNode;
}
var siblingNode = node.previousSibling;
while (siblingNode != null && siblingNode.tagName != "TABLE") {
siblingNode = siblingNode.previousSibling;
}
if (siblingNode == null) {
return null;
}
var checkBox = siblingNode.getElementsByTagName('INPUT')[0];
return checkBox;
}
function GetCurrentLevelCheckBoxes(node) {
var tables = new Array();
while (node.tagName != "TABLE") {
node = node.parentNode;
}
tables[0] = node; //当前选择的checkbox
var siblingNode = node.nextSibling;
var index = 0;
while (siblingNode != null) {
if (siblingNode.tagName == "TABLE") {
tables[++index] = siblingNode;
}
siblingNode = siblingNode.nextSibling
}
siblingNode = node.previousSibling
while (siblingNode != null) {
if (siblingNode.tagName == "TABLE") {
tables[++index] = siblingNode;
}
siblingNode = siblingNode.previousSibling;
}
var checkBoxs = new Array();
var checkBox;
for (var i = 0; i < tables.length; i++) {
checkBox = tables[i].getElementsByTagName('INPUT');
for (var j = 0; j < checkBox.length; j++) {
if (checkBox[j].type == 'checkbox') {
checkBoxs[i] = checkBox[j];
}
}
}
return checkBoxs;
}
function CheckParentNode(ele) {
var currentLevelCheckBoxes = GetCurrentLevelCheckBoxes(ele);
var parentCheckBox = GetParentCheckBox(ele);
if (parentCheckBox != null) {
var checkCount = 0;
for (var i = 0; i < currentLevelCheckBoxes.length; i++) {
if (currentLevelCheckBoxes[i].checked) {
checkCount++;
}
}
if (currentLevelCheckBoxes.length == checkCount) {
parentCheckBox.checked = true;
}
else {
parentCheckBox.checked = false;
}
CheckParentNode(parentCheckBox);
}
}
function OnTreeNodeChecked() {
var ele = event.srcElement;
if (ele.type == 'checkbox') {
var childrenDivID = ele.id.replace('CheckBox', 'Nodes');
var div = document.getElementById(childrenDivID);
if (div != null) {
var checkBoxs = div.getElementsByTagName('INPUT');
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox')
checkBoxs[i].checked = ele.checked;
}
}
CheckParentNode(ele);
}
}
</script>
<asp:TreeView ID="tvCategoryProcess" runat="server" OnClick="OnTreeNodeChecked()">
</asp:TreeView>