PeoplePicker — все что нужно для работы с клиентским кодом

Собственное решение

Собственное решение для получения пользователей и их данных из User field единичного или множественного типа

//Получаем данные пользователей из поля выбора пользователя (единичный и множественный выбор)
function GetPeoplePickerUsersData(divID)
{
	var result = {};

	var $ppDIV = $("div[id='"+ divID +"']");
	var $ppEntities = $ppDIV.find("#divEntityData");
	
	$ppEntities.each(function() 
	{
		//Отображаемое имя
		var displayName = $(this).attr("displaytext");
		result["DisplayName"] = displayName;
		//Найденное
		var isResolved = $(this).attr("isresolved");
		result["Resolved"] = isResolved;
		
		//Для каждого найденного пользователя получаем XML с его данными
		var entityXML = $(this).find("div").attr("data");
		var xmlDoc = $.parseXML(entityXML);
		$(xmlDoc).find("DictionaryEntry").each(function () {
			var key = $(this).find("Key").text();
			var value = $(this).find("Value").text();
			result[key] = value;
		})
	});
	return result;
}

обращение к функции

//Получаем руководителя
var mngData = GetPeoplePickerUsersData("ctl00_ctl50_g_e4ccc992_8553_4a5e_8700_60e9eba33a9b_ff921_ctl00_ctl00_UserField_upLevelDiv");
console.log(mngData.DisplayName);

DisplayName: "Коргуль Татьяна Б."
Resolved: "True"
PrincipalType: "User"
Title: "Руководитель филиала"
Email: "t.korgul@ural.pac.ru"
SPUserID: "107"
AccountName: "i:0#.w|pac\ekb1"
SIPAddress: "smtp:mrk@chel.pac.ru"
Department: "Екатеринбургский филиал"

Получаем из DispForm (множественный выбор)

var sField2 = $('.ms-standardheader:contains("Участники")').parent('td').next('td').find('.ms-peopleux-userdisplink').text();

Нативное решение

Подключаем скрипт

<!-- для работы с PeoplePicker -->
<script src="../_layouts/15/clientpeoplepicker.js"></script>

Добавить пользователя в поле (что бы добавлять пользователей вызывать для каждого пользователя)

//Set PeoplePicker users (что бы добавлять пользователей вызывать для каждого пользователя)
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);

    // Или последние 2 строки меняем на 
    //spPeoplePicker.AddUserKeys(userAccountName);
} 

//Вызов
SetAndResolvePeoplePicker("Администраторы до согласования", val);

Очистить поле

//Clear People Picker
function ClearPeoplePicker(fieldName)  {
	var controlName = fieldName;
	var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
	var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
	var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];
	var usersobject = spPeoplePicker.GetAllUserInfo();
	usersobject.forEach(function (index) {
	  	spPeoplePicker.DeleteProcessedUser(usersobject[index]);
	});			
} 

Получить информацию о пользователе из поля PeoplePicker

//Получить информацию о пользователе из поля PeoplePicker
function getInfoFromPeoplePicker(title) 
{
	var controlName = title;
    var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
    var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
    var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];		 
    var userList = spPeoplePicker.GetAllUserInfo();
    var userInfo = userList[0];
    //The description field contains the login info without the lookup extras.  In new forms this 
    //field can be undefined depending on the field being checked.  Only check if userInfo is
    //initialized.
    if(userInfo != null)
    {
        userEmail = userInfo.EntityData.Email;
    }		 
    return userInfo; 
}

Получить имена пользователей в EditForm

//Получить имена пользователей в EditForm
function getUsersFromPeoplePicker(title) {
    var controlName = title;
    var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
    var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
    var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];		 
    var userList = spPeoplePicker.GetAllUserInfo();
    
    var userNames = "";
   	$(userList).each(function(i) {
			console.log(userList[i].DisplayText);
		userNames += userList[i].DisplayText;
	});

    return userNames;
}

Отключение PeoplePicker

//Отключение PeoplePicker
function disablePeoplePicker(title) {
    var controlName = title;
    var peoplePickerDiv = $("[id$='ClientPeoplePicker'][title='" + controlName + "']");
    var peoplePickerEditor = peoplePickerDiv.find("[title='" + controlName + "']");
    var spPeoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict[peoplePickerDiv[0].id];		 
    spPeoplePicker.SetEnabledState(false);
    $(peoplePickerDiv).find('.sp-peoplepicker-delImage').hide();
}

disablePeoplePicker("Участники");

Если возникают ошибки, значит не успевает подгрузиться sp.js тогда в функции

$(document).ready(function() 
{	
	ExecuteOrDelayUntilScriptLoaded(CustomAction, "sp.js");	

	function CustomAction()
    {
       //Your Code
    }
});	

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *