2011-02-03 57 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服务来查询全局地址列表?