//這是子選擇父親選擇
//在cs page_load里面加一個注冊代碼 Tree_Target.Attributes.Add("onclick", "OnTreeNodeChecked()");//Tree_Target是我的樹控件ID
<script language='javascript' type='text/javascript'>
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) {
}
else {
var checkBoxs = div.getElementsByTagName('INPUT');
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox')
checkBoxs[i].checked = ele.checked;
}
}
var parentDiv = event.srcElement.parentElement.parentElement.parentElement.parentElement.parentElement;
var parentParentDiv = event.srcElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;
var parentParentParentDiv = event.srcElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement;
if (parentDiv != null && parentDiv != undefined) {
var parentCheckBoxID = parentDiv.id.replace('Nodes', 'CheckBox');
var checkBoxs = parentDiv.getElementsByTagName('INPUT');
var childNodeChecked = false;
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox' && checkBoxs[i].checked)
childNodeChecked = true;
}
if (document.getElementById(parentCheckBoxID) != null) {
document.getElementById(parentCheckBoxID).checked = childNodeChecked;
}
}
if (parentParentDiv != null && parentParentDiv != undefined) {
var parentParentCheckBoxID = parentParentDiv.id.replace('Nodes', 'CheckBox');
var checkBoxs = parentParentDiv.getElementsByTagName('INPUT');
var childNodeChecked = false;
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox' && checkBoxs[i].checked)
childNodeChecked = true;
}
if (document.getElementById(parentParentCheckBoxID) != null) {
document.getElementById(parentParentCheckBoxID).checked = childNodeChecked;
}
}
if (parentParentParentDiv != null && parentParentParentDiv != undefined) {
var parentParentParentCheckBoxID = parentParentParentDiv.id.replace('Nodes', 'CheckBox');
var checkBoxs = parentParentParentDiv.getElementsByTagName('INPUT');
var childNodeChecked = false;
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox' && checkBoxs[i].checked)
childNodeChecked = true;
}
if (document.getElementById(parentParentParentCheckBoxID) != null) {
document.getElementById(parentParentParentCheckBoxID).checked = childNodeChecked;
}
}
}
}
</script>
//下面這個是實現(xiàn)父親選擇子也選擇
<script language='javascript' type='text/javascript'>
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) return;
var checkBoxs = div.getElementsByTagName('INPUT');
for (var i = 0; i < checkBoxs.length; i++) {
if (checkBoxs[i].type == 'checkbox')
checkBoxs[i].checked = ele.checked;
}
}
}
</script>
//使用方法和上面一樣
//下面這個也是實現(xiàn)自選父選
<script type="text/javascript">
function client_OnTreeNodeChecked(evt) {
var EVENT = evt || window.event; ////考慮ie和ff兼容問題
var srcElement = EVENT.srcElement || EVENT.target; //考慮ie和ff兼容問題
//var obj = window.event.srcElement;
var obj = srcElement; //for ie/ff 兼容
var treeNodeFound = false;
var checkedState;
if (obj.tagName == "INPUT" && obj.type == "checkbox") {
var treeNode = obj;
checkedState = treeNode.checked;
do {
//obj = obj.parentElement;
obj = obj.parentNode; //處理ie和ff兼容問題.考慮到obj.parentNode似乎ie6和ff都支持,就直接用這個了
} while (obj.tagName != "TABLE")
var parentTreeLevel = obj.rows[0].cells.length;
var parentTreeNode = obj.rows[0].cells[0];
//var tables = obj.parentElement.getElementsByTagName("TABLE");
var tables = obj.parentNode.getElementsByTagName("TABLE");
var numTables = tables.length
if (numTables >= 1) {
for (i = 0; i < numTables; i++) {
if (tables[i] == obj) {
treeNodeFound = true; i++;
if (i == numTables) {
return;
}
}
if (treeNodeFound == true) {
var childTreeLevel = tables[i].rows[0].cells.length;
if (childTreeLevel > parentTreeLevel) {
var cell = tables[i].rows[0].cells[childTreeLevel - 1];
var inputs = cell.getElementsByTagName("INPUT");
if (inputs[0]) //加上此判斷用于處理子節(jié)點有些節(jié)點有checkbox,有些沒有的情況。
{
inputs[0].checked = checkedState;
}
}
else {
return;
}
}
}
}
}
}
</script>
//使用方法如下
<asp:TreeView ID="Tree_Target" runat="server" ShowLines="True" ShowCheckBoxes="All"
onclick="client_OnTreeNodeChecked(event);">
</asp:TreeView>