一个月面中有两个东西,其中一个是树形图,另一个是复选框,为了方便我们说这个复选框为“复选框A”树形图的每个节点前面也有复选框 要求在客户端做到:当复选框A被打上勾时,点击树形图的一个节点,此节点的所有子节点受父节点控制,也就是说我把一个节点打勾后所有子节点也会打勾当复选框A没有被打上勾时,子节点不受父节点控制请问如何实现?或者给出相关js代码 谢谢树形图是用ASP。NET的控件生成的

解决方案 »

  1.   


    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TreeView ID="TreeView1" runat="server" onclick="javascript:check()" ShowCheckBoxes="All" ShowLines="True">
                <Nodes>
                    <asp:TreeNode Text="New Node1" Value="New Node1">
                        <asp:TreeNode Text="New Node2" Value="New Node2">
                            <asp:TreeNode Text="New Node3" Value="New Node3">
                                <asp:TreeNode Text="New Node4" Value="New Node4"></asp:TreeNode>
                            </asp:TreeNode>
                        </asp:TreeNode>
                    </asp:TreeNode>
                    <asp:TreeNode Text="New Node5" Value="New Node5">
                        <asp:TreeNode Text="New Node6" Value="New Node6">
                            <asp:TreeNode Text="New Node7" Value="New Node7">
                                <asp:TreeNode Text="New Node8" Value="New Node8"></asp:TreeNode>
                            </asp:TreeNode>
                        </asp:TreeNode>
                    </asp:TreeNode>
                </Nodes>
            </asp:TreeView>
        
        </div>
        </form>
    </body>
    <script type="text/javascript"> 
    var $ = function(id){
        return document.getElementById(id);
    }function getlayer(obj)  
    {  
       return obj.parentElement.parentElement.parentElement.rows[0].cells.length; 
    } function check() 

        var obj = event.srcElement;
        if(obj.tagName=="INPUT" && obj.type=="checkbox" && obj.checked==true)
        {
            var the_tab = obj.parentElement.parentElement.parentElement; 
            var num = obj.id.replace( "TreeView1n","").replace("CheckBox",""); 
            var flag = true;
            while(flag)
            {
                var n = parseInt(num) +1;
                var oldcheck = "TreeView1n"+ num +"CheckBox"; 
                var newcheck = "TreeView1n"+ n +"CheckBox";
                
                if($(newcheck)!=null && getlayer($(oldcheck))<getlayer($(newcheck)))
                {
                    $(newcheck).checked = true;
                    num = n;
                }
                else
                {
                    flag = false;
                }
            }
        }

    </script>
    </html>
      

  2.   

    TreeNode tn = this.TreeView1.SelectedNode;
    if(tn.Checked == true)
    {
    for(int i =0;i<tn.ChildNodes.Count;i++)
    {
    tn.ChildNodes[i].Checked = true;
    }
    }
      

  3.   

    http://www.cnblogs.com/listhome/archive/2006/12/31/608746.html
    是这个意思吧
      

  4.   

    listhome 的代码很好用 问题解决!