none
Указать значение в People Picker при помощи JS ?

    Вопрос

  • Здравствуйте.

    У меня на странице в SharePoint есть форма с полем типа "Пользователь или группа". Я могу найти это поле при помощи JS но не могу туда прописать нужную мне учётную запись из Active Directory.

    Понятное дело, что руками всё выбирается и ставится. Мне надо скриптом.

    Подскажите плз как сделать?

    12 сентября 2017 г. 6:14

Ответы

  • Здравствуйте.

    У меня на странице в SharePoint есть форма с полем типа "Пользователь или группа". Я могу найти это поле при помощи JS но не могу туда прописать нужную мне учётную запись из Active Directory.

    Понятное дело, что руками всё выбирается и ставится. Мне надо скриптом.

    Подскажите плз как сделать?

    В поле People Picker тебе нужно автоматом текущего пользователя подставлять, можно через SPServces.

    Можно так:

     $(document).ready(function() {
       //Get the current user name
       var userName = $().SPServices.SPGetCurrentUser();
       var ppDiv = $("[id$='ClientPeoplePicker'][title='people1']");
       var ppEditor = ppDiv.find("[title='people1']");
       var spPP = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv[0].id];
       ppEditor.val(userName);
       spPP.AddUnresolvedUserFromEditor(true);
       });

    А можно и так:

      $( document ).ready(function() {                 
        //get current user with spservices
        var currentUserName= $().SPServices.SPGetCurrentUser({
            webURL:'http://sp2013',
            fieldName: "Name",
            debug: false
            });                     
             
            //trim string with wrong chars
            var user = currentUserName.replace("i:0#.w|","");               
             
             //Set Field by passing the div title
            SetPeoplePicker('Bearbeiter', user);
            function SetPeoplePicker(fieldName, userAccountName) { 
                var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + fieldName + "']"); 
                var peoplePickerEditor = peoplePickerDiv.find("[title='" + fieldName + "']"); 
                var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id]; 
                peoplePickerEditor.val(userAccountName); 
                spPeoplePicker.AddUnresolvedUserFromEditor(true); 
            }       
            //set focus to another field
            $("[id$='Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField'][title='Beschreibung']").focus(); <br>  }); 

    Без SPServices:

    function SetAndResolvePeoplePicker(fieldName, userAccountName) {
        var controlName = fieldName;
        var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
        var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
        var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
        peoplePickerEditor.val(userAccountName);
        spPeoplePicker.AddUnresolvedUserFromEditor(true);
        spPeoplePicker.SetEnabledState(true);
    }
    function GetCurrentUser(userid) {
        var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
        var requestHeaders = { "accept" : "application/json;odata=verbose" };
    
        $.ajax({
            url : requestUri,
            contentType : "application/json;odata=verbose",
            headers : requestHeaders,
            success : onSuccess,
            error : onError
        });
    }
    function onSuccess(data, request){
        var loginName = data.d.LoginName.split('|')[1];
        SetAndResolvePeoplePicker("Subscriber",loginName);
    }
    function onError(error) {
        alert(error);
    }
    $(document).ready(function () {
        var userid = _spPageContextInfo.userId;
        GetCurrentUser(userid);
    });
    12 сентября 2017 г. 6:43

Все ответы

  • Здравствуйте.

    У меня на странице в SharePoint есть форма с полем типа "Пользователь или группа". Я могу найти это поле при помощи JS но не могу туда прописать нужную мне учётную запись из Active Directory.

    Понятное дело, что руками всё выбирается и ставится. Мне надо скриптом.

    Подскажите плз как сделать?

    В поле People Picker тебе нужно автоматом текущего пользователя подставлять, можно через SPServces.

    Можно так:

     $(document).ready(function() {
       //Get the current user name
       var userName = $().SPServices.SPGetCurrentUser();
       var ppDiv = $("[id$='ClientPeoplePicker'][title='people1']");
       var ppEditor = ppDiv.find("[title='people1']");
       var spPP = SPClientPeoplePicker.SPClientPeoplePickerDict[ppDiv[0].id];
       ppEditor.val(userName);
       spPP.AddUnresolvedUserFromEditor(true);
       });

    А можно и так:

      $( document ).ready(function() {                 
        //get current user with spservices
        var currentUserName= $().SPServices.SPGetCurrentUser({
            webURL:'http://sp2013',
            fieldName: "Name",
            debug: false
            });                     
             
            //trim string with wrong chars
            var user = currentUserName.replace("i:0#.w|","");               
             
             //Set Field by passing the div title
            SetPeoplePicker('Bearbeiter', user);
            function SetPeoplePicker(fieldName, userAccountName) { 
                var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + fieldName + "']"); 
                var peoplePickerEditor = peoplePickerDiv.find("[title='" + fieldName + "']"); 
                var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id]; 
                peoplePickerEditor.val(userAccountName); 
                spPeoplePicker.AddUnresolvedUserFromEditor(true); 
            }       
            //set focus to another field
            $("[id$='Title_fa564e0f-0c70-4ab9-b863-0177e6ddd247_$TextField'][title='Beschreibung']").focus(); <br>  }); 

    Без SPServices:

    function SetAndResolvePeoplePicker(fieldName, userAccountName) {
        var controlName = fieldName;
        var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
        var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
        var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
        peoplePickerEditor.val(userAccountName);
        spPeoplePicker.AddUnresolvedUserFromEditor(true);
        spPeoplePicker.SetEnabledState(true);
    }
    function GetCurrentUser(userid) {
        var requestUri = _spPageContextInfo.webAbsoluteUrl + "/_api/web/getuserbyid(" + userid + ")";
        var requestHeaders = { "accept" : "application/json;odata=verbose" };
    
        $.ajax({
            url : requestUri,
            contentType : "application/json;odata=verbose",
            headers : requestHeaders,
            success : onSuccess,
            error : onError
        });
    }
    function onSuccess(data, request){
        var loginName = data.d.LoginName.split('|')[1];
        SetAndResolvePeoplePicker("Subscriber",loginName);
    }
    function onError(error) {
        alert(error);
    }
    $(document).ready(function () {
        var userid = _spPageContextInfo.userId;
        GetCurrentUser(userid);
    });
    12 сентября 2017 г. 6:43
  • Спасибо! Круто. Обязательно проверю и отпишусь.
    12 сентября 2017 г. 16:34