检查父节点是否已经选中所有的子节点 C# asp.net

3

我有一个继承自asp.net树形视图控件的自定义树形视图,其中存在n层父子关系。根据某些计算,我已经勾选了子节点。如果所有子节点都被勾选,我希望父节点也被勾选。由于我是基于某些计算检查子节点的,所以我不能使用“after check”事件。 有人能为我提供这方面的C#代码吗?

    private TreeNode _parentNode;
private void CheckedParent(TreeNodeCollection nodeCollection)
        {
            foreach (TreeNode node in nodeCollection)
            {
                if (node.ChildNodes.Count > 0)
                {
                    _parentNode = node;
                    CheckedParent(node.ChildNodes);
                }
                else
                {
                    bool allChildChecked = true
                    foreach (TreeNode childNode in nodeCollection)
                    {
                        if (!childNode.Checked)
                        {
                            allChildChecked = false;
                        }
                    }

                }
            }
            if (allChildChecked )
            {
                _parentNode.Checked = true;
                _isAllChildChecked = false;
            }
}
1个回答

2

如果所有子节点都被选中,该方法将返回true;否则它将返回false

    private bool AllChildChecked(TreeNode currentNode)
    {
        bool res = true;

        foreach (TreeNode node in currentNode.ChildNodes)
        {
            res = node.Checked;
            if (!res) break;

            res = this.AllChildChecked(node);
            if (!res) break;
        }

        return res;
    }

这根本不起作用,.ChildNodes甚至不存在,它只会遇到错误。 - Robin33

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接