Как я могу проверить в форме InfoPath, существует ли пользователь на портале SharePoint? - PullRequest
3 голосов
/ 11 ноября 2008

Я создаю форму в InfoPath, которая должна быть интегрирована в портал SharePoint 2007. В этой форме будет текстовое поле, в которое пользователь может ввести имя человека.

Как я могу проверить, существует этот Человек или нет?

Вместо проверки пользователя, есть ли способ заполнить выпадающий список всеми именами пользователей портала? (какой причиной будут пользователи из Active Directory)

Ответы [ 6 ]

1 голос
/ 23 декабря 2008

Вы пробовали смотреть на Селектор контактов (элемент управления ActiveX). Вот MSDN-статья , описывающая, как добавить его в качестве элемента управления в InfoPath, а , эта описывает, как заставить его работать.

Я использовал его в большинстве своих проектов infopath, и он работает безупречно - также для форм с поддержкой браузера.

1 голос
/ 11 ноября 2008

Я специально этого не делал, так что может быть лучше, но я извлек много данных из SharePoint в форму InfoPath (развернут в библиотеку форм SharePoint и доступен через SharePoint Forms Service с MOSS Enterprise), а также использовать другой способ с использованием веб-служб SharePoint - очень быстрый в использовании, и пользовательский веб-сервис прямо здесь.

0 голосов
/ 13 марта 2009

Посмотрите на эту ссылку, она объясняет, как заполнить раскрывающийся список пользователями SharePoint

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

Я хочу подтвердить, - сделать текстовое поле - Добавьте кнопку, назовите ее ValidateUser - Создайте соединение получения к ...... - Правила Att для пользователя ValidateUser - Добавьте текстовое поле в поле AccountName во вторичном источнике данных. - выполнить приемное соединение - Получить значение поля Value с фильтром Name = "PreferredName"

Эта работа для Infopath Form Services Протестируйте его, введите UserLogin в текстовое поле и нажмите кнопку «Подтвердить»

1010 * Frederik *

0 голосов
/ 10 февраля 2009

Используйте этот элемент управления: http://blogs.msdn.com/infopath/archive/2007/02/28/using-the-contact-selector-control.aspx

Или, если вы хотите создать свой собственный валидатор, вам нужно будет запросить базу данных профиля SharePoint. Я бы порекомендовал это по запросу AD напрямую. В Интернете много статей о работе с базой данных профиля.

0 голосов
/ 06 января 2009

Я не проверяю существование человека, но я определяю его полное имя, используя его логин и SharePoint. Вы должны иметь возможность изменить этот код для ваших целей, он ниже. Для того, чтобы он функционировал, вам нужно подключение для передачи данных в вашем документе InfoPath с именем GetUsersFromSP . Настраивается следующим образом:

  • Местоположение - http://njintranet2/_vti_bin/usergroup.asmx?WSDL
  • Операция - GetUserColectionFromSite (последняя в списке)
  • Автоматическое получение данных при открытии формы должно быть проверено .

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;
            }
        }
0 голосов
/ 22 декабря 2008

При выполнении чего-то подобного в приложении ASP.NET я использовал поиск Sharepoint и искал область "Люди" для конкретного пользователя. Вы также можете выполнять поиск по информации профиля, чтобы отозвать всех с определенным названием должности или в определенном отделе.

...