各位高手有哪位可以帮助我解决下面的问题:
我在ASP页面中拉个TREEVIEW控件,如何可以实现,勾选节点,使其下面的子节点的复选框也被勾选,取消勾选,子节点复选框也被取消勾选,如勾选的是根节点,下面的所有父节点、子节点都被勾选,希望不要是JS文件,谢谢!急!

解决方案 »

  1.   

    不要JS,那可以通过Treeview的slectchange事件,获取对应节点的值,然后遍历其子节点
      

  2.   

    不用JS,在treeview事件里选择
      protected void TreeView1_TreeNodeCheckChanged(object sender, TreeNodeEventArgs e)
        {
            SetChildChecked(e.Node);
            if (!e.Node.Value.Equals("0"))
            {
                SetParentChecked(e.Node);
            }
        }
        private void SetChildChecked(TreeNode parentNode)
        {
            foreach (TreeNode node in parentNode.ChildNodes)
            {
                node.Checked = parentNode.Checked;
                if (node.ChildNodes.Count > 0)
                {
                    SetChildChecked(node);
                }        }    }
        private void SetParentChecked(TreeNode childNode)
        {        TreeNode parentNode = childNode.Parent;
            if (parentNode != null)
            {
                if (!parentNode.Checked && childNode.Checked)
                {                parentNode.Checked = true;            }
                else if (parentNode.Checked && !childNode.Checked)
                {                int checks = 0;                foreach (TreeNode node in parentNode.ChildNodes)
                    {
                        if (node.Checked)
                        {
                            checks++;
                            break;
                        }
                    }
                    if (checks == 0)
                    {
                        parentNode.Checked = false;
                        if (!parentNode.Value.Equals("0"))
                        {
                            SetParentChecked(parentNode);
                        }
                    }
                }        }    }
        private void NodeCheck(TreeNode TNode)
        {
            bool bFlag = false;
            if (TNode != null)
            {
                if (TNode.Checked)
                {
                    if (TNode.ChildNodes.Count > 0)
                    {
                        for (int i = 0; i < TNode.ChildNodes.Count; i++)
                            TNode.ChildNodes[i].Checked = true;
                    }
                    if (TNode.Parent != null)
                        TNode.Parent.Checked = true;
                }
                else
                {
                    if (TNode.ChildNodes.Count > 0)
                    {
                        for (int i = 0; i < TNode.ChildNodes.Count; i++)
                            TNode.ChildNodes[i].Checked = false;
                    }
                    if (TNode.Parent != null)
                    {
                        TreeNode node = TNode.Parent;
                        for (int i = 0; i < node.ChildNodes.Count; i++)
                        {
                            if (node.ChildNodes[i].Checked)
                            { bFlag = true; break; }
                        }
                        if (bFlag) TNode.Parent.Checked = true;
                        else TNode.Parent.Checked = false;
                    }
                }
            }
        }
    JS实现无刷新选择,代码很多搜索下
      

  3.   

    无法触发TreeView1_TreeNodeCheckChanged事件,为什么了?
      

  4.   

     多谢 wuyq11
      您提供的方法很好,我稍微改了一些就可以在我的上面用了。