2011-02-03 55 views
0

我需要在InfoPath中填充來自Active Directory系統的所有用戶的組合框。我也想這個組合框有自動完成有人可以請指出我在正確的方向來完成此?我在網上找到的所有東西似乎只加載當前登錄的用戶。InfoPath - 從Web服務中爲AD用戶填充組合框

在此先感謝!

回答

1

如果您的域名上有sharepoint服務器,則可以利用here中描述的聯繫人選擇器控件。

否則,您將被迫在C#中創建一些代碼。基本上你有兩個選擇

  1. 在C#中創建自定義控件,並在信息通道中使用它。 Tutorial
  2. 創建標準的infopath組合框並將其綁定到自定義C#代碼中的動態創建的集合。

這兩個選項都需要:Extensive tutroial如何使用DirectoryServices命名空間中的類。

根據評論,我認爲你應該看看this post關於將多個接觸選擇器控件添加到一個信息目錄表格中,還有this thread

+0

我們確實有一個Sharepoint服務器,我最初嘗試使用聯繫人選擇器。但是,我遇到了一個問題,當我在重複部分中加載多個項目時,聯繫人選擇器將使用第一個項目中的值填充所有項目。我會檢查你的鏈接。謝謝 – 2011-02-03 21:32:46

+0

我已經根據評論更新了帖子。 – baalazamon 2011-02-03 21:41:28

1

你恐怕會在這裏有點學習。你需要編寫一個LDAP查詢來獲取這些信息。 LDAP學習有點麻煩。使用.NET,您可以從System.DirectoryServices名稱空間獲得幫助。例如: -

 var searcher = new DirectorySearcher("(objectCategory=user)"); 
     var results = searcher.FindAll(); 
     for (int i=0; i<results.Count; i++) 
     { 
      Console.WriteLine(results[i].GetDirectoryEntry().Name); 
     } 

你可能需要細化過濾器來限制搜索到特定的OU,以避免返回服務帳戶等。您還需要考慮撤回用戶的全名等屬性。

另一個可能更容易的途徑是,如果您的域具有Exchange,那麼可以使用Exchange Web服務來查詢全局地址列表?