就是VS2005的TreeView中父节点的CheckBox被点击 则其下的所有子节点也被选中
子节点只要有一个选择 父节点也被选择上
子节点没有一个被选择 父节点就取消选择
<script >
function GoClick()
{
var obj = event.srcElement;
if(obj.tagName.toUpperCase() != "INPUT") return;
var tb = obj.parentElement.parentElement.parentElement.parentElement;//当前节点的Table
SelAllChildren(tb,obj.checked);
tb= tb.parentElement;//
while(true)
{
tb = tb.previousSibling
if( tb == null) return;
SetParentCheckBoxStatus(tb);
tb= tb.parentElement
if( tb == null) return;
}
}
function SelAllChildren(tb,checked)
{
var div = tb.nextSibling;
try
{
for(var i=0;i<div.children.length;i++)
{
if(div.children[i].tagName.toUpperCase()!="TABLE")continue;
var chkBox= FindRowCheckBox(div.children[i].rows[0]);
if(chkBox == null) continue;
chkBox.checked = checked;
SelAllChildren(div.children[i],checked);
}
}catch(e){}
}
function SetParentCheckBoxStatus(objTb)
{
var div = objTb.nextSibling;
var bSelAll = true;
var bSelOne = false;
for(var i=0;i<div.children.length;i++)
{
if(div.children[i].tagName.toUpperCase()!="TABLE")continue;
var chkBox= FindRowCheckBox(div.children[i].rows[0]);
if(!chkBox.checked)
{
bSelAll =false;
}else
{
bSelOne = true;
}
}
if(objTb.rows!= null)
{
var chkBox = FindRowCheckBox(objTb.rows[0])
chkBox.checked = bSelOne;
}
}
function FindRowCheckBox(tr)
{
for(var i=0;i<tr.cells.length;i++)
{
if(tr.cells[i].firstChild.tagName == "INPUT")
{
return tr.cells[i].firstChild;
}
}
}
function CheckDeleteTree(form,treeviewid)
{
if(document.getElementById(treeviewid+"_SelectedNode").value == "")
{
alert("请选择!");
return
}else
{
return confirm("确定?");
}
}
</script>
<asp:TreeView ID="TreeView1"
οnclick="javascript:GoClick()"
EnableClientScript="true"/>