InfoPath - 使用Web服务中的AD用户填充组合框

时间:2011-02-03 20:46:00

标签: infopath

我需要在InfoPath中使用Active Directory系统中的所有用户填充组合框。我也喜欢这个组合框有自动完成有人可以指点我正确的方向来完成这个吗?我在网上找到的所有东西似乎只加载当前登录的用户。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果您的域上有sharepoint服务器,则可以利用here所述的联系人选择器控件。

否则你将被迫在C#中创建一些代码。基本上你有两个选择

  1. 在C#中创建自定义控件并在infopath中使用它。 Tutorial
  2. 创建标准的infopath组合框并将其绑定到自定义C#代码中动态创建的集合。
  3. 这两个选项都需要这样:Extensive tutroial如何使用DirectoryServices名称空间中的类。

    根据评论我认为你应该看一下this post关于将多个联系人选择器控件添加到一个infopath表单以及this thread

答案 1 :(得分:1)

我担心你会有一些学习的事情。您需要编写LDAP查询才能获取此信息。 LDAP是一项值得学习的苦差事。使用.NET,您可以从System.DirectoryServices命名空间获得一些帮助以获得帮助。 e.g:

        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服务查询全局地址列表吗?