您的位置:首页 > 编程语言 > ASP

asp.net treeview 级联选择

2010-10-30 14:04 309 查看
<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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: