2012-12-13 2 views
0

WPF TreeView 요소를 사용하여 Active Directory 개체 브라우저를 만들었지 만 OU를 내 트리에만 추가하려고합니다. 내가 아주 가까이에있는 것처럼 느껴진다. 내 Item.Expanded 이벤트 핸들러에 대한 나의 코드가 여기에있다. 이 모든 작품,하지만 난 비 OU 개체를 필터링 할 반면 그것은 모든 객체를 추가필터 개체 클래스에 기반한 개체 열

private void item_Expanded(object sender, RoutedEventArgs e) 
    { 
     TreeViewItem item = (TreeViewItem)e.OriginalSource; 
     item.Items.Clear(); 

     DirectoryEntry de; 
     if (item.Tag is Domain) 
     { 
      Domain dom = (Domain)item.Tag; 
      de = dom.GetDirectoryEntry(); 
     } 
     else 
     { 
      de = (DirectoryEntry)item.Tag; 
     } 

     try 
     { 
      foreach (DirectoryEntry dirEntry in de.Children) 
      { 
       TreeViewItem newItem = new TreeViewItem(); 
       newItem.Tag = dirEntry; 
       newItem.Header = dirEntry.Name; 
       newItem.Items.Add("*"); 
      } 
     } 

     catch (Exception ex) 
     { 
      //Exception! 
      textBox.Text = ex.ToString(); 
     } 
    } 

을 나는 (오브젝트 클래스 배열

if (dirEntry.Properties["objectClass"].Value.ToString() == "organizationalUnit") 

하지만 작동하지 않았다 같은 것입니다했다 값의, 그래서 문자열에 비해 작동하지 않았다 비교).

답변

-1
if (dirEntry.Properties["objectClass"].Contains("organizationalUnit")) 

내가 원하는 것을 얻었습니다. 희망이 다른 사람을 도와주세요!

1

더 일반적인 방법은 사용하는 것입니다 DirectorySearcher :

DirectorySearcher ds = new DirectorySearcher(de); 
ds.Filter = "(objectClass=organizationalUnit)"; 
ds.SearchScope = SearchScope.OneLevel; 
foreach (SearchResult sr in ds.FindAll()) 
{ 
    DirectoryEntry dirEntry = sr.GetDirectoryEntry(); 
    //your code here 
}