












<script language="javascript" type="text/javascript">
var OnNodeChecked;
var OnInit;
function client_OnTreeNodeChecked()
{
var element = event.srcElement;
if (element.tagName == "INPUT" && element.type == "checkbox")
{
var checkedState = element.checked;
while (element.tagName != "TABLE") // Get wrapping table
{
element = element.parentElement;
}
setChildCheck(element,checkedState);
setParentCheck(element,checkedState);
if (OnInit)
{
OnInit();
}
var tree = document.getElementById("TreeView1");
FindCheckedFromNode(tree)
}
}
function FindCheckedFromNode(node)
{
var element = node;
if (element == null)
return;
var a;
var childTables = element.getElementsByTagName("TABLE");
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
{
var checkboxIndex = childTables[tableIndex].rows[0].cells.length - 1;
var cell = childTables[tableIndex].rows[0].cells[checkboxIndex];
var checkboxes = cell.getElementsByTagName("INPUT");
if (checkboxes.length == 1 && checkboxes[0].checked)
{
a = a + childTables[tableIndex].rows[0].innerText;
AddChecked(childTables[tableIndex]);
}
}
}
function AddChecked(table)
{
if (OnNodeChecked)
OnNodeChecked(table);
}
function setChildCheck(table,checkedState)
{
var element = table.nextSibling;
if (element == null) // If no childrens than exit
return;
var childTables = element.getElementsByTagName("TABLE");
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
{
checkTable(childTables[tableIndex], checkedState);
}
}
function setParentCheck(table,checkedState)
{
if (table == null || table.rows[0].cells.length == 2) // This is the root
{
return;
}
var parentTable = table.parentElement.previousSibling;
if (checkedState)
{
checkTable(parentTable, checkedState);
}
else
{
checkBrother(parentTable,checkedState)
}
setParentCheck(parentTable,checkedState);
}
function checkTable(table, checked)
{
var checkboxIndex = table.rows[0].cells.length - 1;
var cell = table.rows[0].cells[checkboxIndex];
var checkboxes = cell.getElementsByTagName("INPUT");
if (checkboxes.length == 1)
{
checkboxes[0].checked = checked;
}
}
function checkBrother(parentTable,checkedState)
{
var bChecked = true;
var element = parentTable.nextSibling;
if (element == null) // If no childrens than exit
return;
var childTables = element.getElementsByTagName("TABLE");
for (var tableIndex = 0; tableIndex < childTables.length; tableIndex++)
{
var checkboxIndex = childTables[tableIndex].rows[0].cells.length - 1;
var cell = childTables[tableIndex].rows[0].cells[checkboxIndex];
var checkboxes = cell.getElementsByTagName("INPUT");
if (checkboxes.length == 1 && checkboxes[0].checked)
{
bChecked = false;
break;
}
}
if(bChecked)
{
checkTable(parentTable,checkedState);
}
else
{
setParentCheck(parentTable,!checkedState);
}
};
//前台调用
var value='';
OnNodeChecked = fnDoNodeChecked;
OnInit = fnDoInit;
function fnDoInit()
{
value = "";
} 
function fnDoNodeChecked(table)
{
value = value + table.rows[0].innerText;
alert(value);
}
</script>
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。