3

我正在 InfoPath 中创建一个要集成到 SharePoint 2007 门户中的表单。在此表单中将有一个文本字段,用户可以在其中输入人员姓名。

如何验证此人是否存在?

有没有办法用门户的所有用户名填充下拉列表,而不是验证用户?(原因可能是来自 Active Directory 的用户)

4

6 回答 6

1

您是否尝试过查看联系人选择器(一个 ActiveX 控件)。这是一篇MSDN 文章,描述了如何在 InfoPath 中将其添加为控件,这篇文章描述了如何使其工作。

我一直在我的大多数 infopath 项目中使用它,并且它完美地工作 - 也适用于支持浏览器的表单。

于 2008-12-23T10:00:56.767 回答
1

我没有专门这样做,因此可能有更好的方法,但我一直在将大量数据从 SharePoint 中提取并放入 InfoPath 表单(部署到 SharePoint 表单库并通过 MOSS Enterprise 的 SharePoint 表单服务访问) 以及使用 SharePoint Web 服务的另一种方式 - 使用非常快,并且人员 Web 服务就在那里。

于 2008-11-11T12:51:30.367 回答
0

看看这个链接,它解释了如何用 SharePoint 用户填充下拉列表

http://blueinfopath.blogspot.com/2008/10/how-to-populate-list-with-sharepoint.html

我要验证, - 创建一个文本框 - 添加一个按钮,将其命名为 ValidateUser - 创建到......的接收连接 - 向 ValidateUser 添加规则 - 将文本框添加到辅助数据源中的 AccountName 字段 -执行接收连接 - 使用过滤器 Name="PreferredName" 获取字段 Value 的值

这适用于 Infopath Form Services 测试它并将 UserLogin 输入到文本框中,然后单击验证按钮

弗雷德里克

于 2009-03-13T09:25:11.697 回答
0

在 ASP.NET 应用程序中执行类似操作时,我使用了 Sharepoint 搜索并搜索了特定用户的“人员”范围。您还可以搜索个人资料信息,以便您可以撤回具有特定职位或特定部门的每个人。

于 2008-12-22T14:00:20.903 回答
0

使用此控件:http: //blogs.msdn.com/infopath/archive/2007/02/28/using-the-contact-selector-control.aspx

或者,如果您想构建自己的验证器,则需要查询 SharePoint 配置文件数据库。我建议直接查询 AD。网上有很多关于使用配置文件数据库的文章。

于 2009-02-10T02:38:19.513 回答
0

我不验证一个人的存在,但我确实使用他们的登录名和 SharePoint 来确定一个人的全名。您应该能够根据您的目的修改此代码,如下所示。要使其发挥作用,您需要在 InfoPath 文档中建立一个名为GetUsersFromSP的数据连接。配置如下:


string ADName = System.Environment.UserName;
        IXMLDOMDocument3 UserQuery = (IXMLDOMDocument3)thisXDocument.GetDOM("GetUsersFromSP");
        UserQuery.setProperty("SelectionNamespaces",
            "xmlns:dfs=\"http://schemas.microsoft.com/office/infopath/2003/dataFormSolution\" " +
            "xmlns:tns=\"http://schemas.microsoft.com/sharepoint/soap/directory/\"");

        ((WebServiceAdapterObject)thisXDocument.DataAdapters["GetUsersFromSP"]).Query();

        IXMLDOMNode Users = UserQuery.selectSingleNode("//dfs:myFields/dfs:dataFields/tns:GetUserCollectionFromSiteResponse/tns:GetUserCollectionFromSiteResult/tns:GetUserCollectionFromSite/tns:Users");

        foreach (IXMLDOMNode current in Users.selectNodes("tns:User"))
        {
            string Login = current.attributes.getNamedItem("LoginName").text;

            Login = Login.ToUpper();
            if (Login.EndsWith(ADName.ToUpper()))
            {
                thisXDocument.DOM.selectSingleNode("my:root/my:config/my:User").text = current.attributes.getNamedItem("Name").text;
                break;
            }
        }
于 2009-01-06T00:08:36.240 回答