一:有一个TreeView,CheckBox可以,要求选中一个节点里(Checked),它下面的节点也变成被选中状态(包括子节点,孙节点....)。   
  二:当一个节点的子节点或者孙节点....没被选中,则其自身的也变为不选中状态  msdn     上的标准答案修改如下  
    Sub TreeView_CheckChanged(ByVal sender As Object, ByVal e As TreeNodeEventArgs)
        Try
            If e.Node.ChildNodes.Count > 0 Then
                Me.CheckAllChildNodes(e.Node, e.Node.Checked)
            End If
        Catch ex As Exception
            Throw New Exception(ex.Message, ex)
        End Try
    End Sub
    
    Sub CheckAllChildNodes(ByVal treeNode As TreeNode, ByVal nodeChecked As Boolean)
        Try
            Dim node As TreeNode
            For Each node In treeNode.ChildNodes
                node.Checked = nodeChecked
                If node.ChildNodes.Count > 0 Then
                    Me.CheckAllChildNodes(node, nodeChecked)
                End If
            Next node
        Catch ex As Exception
            Throw New Exception(ex.Message, ex)
        End Try
    End Sub
后台中这样调用
treDrName.Attributes.Add("onclick", "TreeView_CheckChanged")
但是  感觉 没有效果的 
请各位高手 支招  啊 
要测试了,没有时间研究了,感谢各位。

解决方案 »

  1.   

    <script type="text/jscript">
            function  UncheckParent (obj)
            {   
            
                
                while(obj !=  null)
                {
                    var tagName = obj.tagName.toLowerCase();
                    
                    if(tagName == "div" && obj.id == "TreeView1")
                    {
                        return;
                    }
                    
                   
                    if( tagName==  "table")
                    {
                         var checkBox = obj.getElementsByTagName("INPUT");
                        
                        if(checkBox.length >0)
                        {
                            checkBox[0].checked = false;
                        }
                        obj = obj.parentElement.previousSibling;
                       
                    }else
                   
                    
                    obj = obj.parentElement;
                }
            }
            function client_OnTreeNodeChecked()
            {   
                
                var obj = window.event.srcElement;
                var treeNodeFound = false;
                var checkedState;
                if (obj.tagName == "INPUT" && obj.type == "checkbox") 
                {
                    var treeNode = obj;
                    checkedState = treeNode.checked;
                    if(!checkedState)
                    {
                        UncheckParent(obj);
                         
                    }
                    
                    
                    do
                    {
                     obj = obj.parentElement;
                    } 
                    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 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");
                                    inputs[0].checked = checkedState;
                                }
                                else
                                {
                                    return;
                                }
                            }
                        }
                    }
                }
            }
        </script>
        <asp:TreeView ID="TreeView1"  onclick="javascript:client_OnTreeNodeChecked();"