【问题标题】:populate treeview recursively递归填充树视图
【发布时间】:2017-09-05 21:22:35
【问题描述】:

我有一个显示我们 ActiveDirectory 的所有组成员的 DataGridView。双击组时,我想在树视图中显示该组的所有成员和子成员(包括用户)。我已经做了几次尝试,但我的问题是该过程需要运行,直到所有成员和子成员都已添加到树视图中,我无法做到这一点。 我需要为此使用某种模式吗? 从这里开始,我的代码应该是怎样的?

PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
GroupPrincipal gp = GroupPrincipal.FindByIdentity(ctx, name);

var nodes = new List<TreeNode>();
foreach (Principal p in gp.GetMembers())
{
     nodes.Add(new TreeNode(p.Name));
}
treeView.Nodes.AddRange(nodes.ToArray());

【问题讨论】:

    标签: c# datagridview active-directory treeview


    【解决方案1】:

    也许使用 IEnumerable 来选择所有父对象和子对象。

    使用这个话题:How to get all children of a parent control? 或者这个关于节点的话题:How do I get all children from a given parent node?

    【讨论】:

      【解决方案2】:

      查询 Active Directory 可能需要一些时间,尤其是在具有大量对象的大型环境中或与域控制器的连接速度较慢时。

      因此,我建议您仅枚举和填充 TreeView 中的顶级节点,然后在展开 OU 或容器时枚举子节点。

      这使您的应用程序响应迅速,因为通常用户只会扩展几个节点而不是所有节点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-17
        • 2011-07-21
        • 1970-01-01
        • 2014-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多