2017-09-05 2 views
0

ActiveDirectory의 모든 그룹 구성원을 표시하는 DataGridView가 있습니다. 그룹을 두 번 클릭하면이 그룹의 모든 구성원과 하위 구성원 (사용자 포함)을 트리보기로 표시하려고합니다. 몇 가지 시도를 만들었지 만 문제는 모든 멤버와 하위 멤버가 treeView에 추가 될 때까지 프로 시저를 실행해야한다는 것입니다.이 작업은 수행 할 수 없습니다. 이 용도로 사용해야하는 패턴이 있습니까? 이 코드에서 어떻게 시작해야합니까?treeview를 재귀 적으로 채우기

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()); 

답변

1

특히 개체가 많이 나와 더 큰 환경에서, 시간이 조금 걸릴 수 있습니다 Active Directory를 쿼리 당신은 도메인 컨트롤러에 느린 연결이있을 때 .

따라서 TreeView에서 최상위 수준 노드를 열거하고 채우고 하위 노드를 열거하는 OU 또는 컨테이너를 확장 할 것을 권장합니다.

이렇게하면 일반적으로 사용자가 모든 노드가 아닌 일부 노드 만 확장하므로 응용 프로그램의 응답 속도가 빨라집니다.

관련 문제