2013-07-17 7 views
2

Может ли кто-нибудь помочь мне получить информацию о пользователе из колонки пользователя с помощью javascript? До сих пор мне удалось прочитать элемент списка и вернуть SP.FieldUserValue, из которого я могу получить числовой идентификатор (не уверен, что это за идентификатор) и отображаемое имя. напримерSharePoint 2013 JSOM User Key From Person Field

var ManVal = oListItem.get_item("RecruitingManager").get_lookupValue(); 
var ManId = oListItem.get_item("RecruitingManager").get_lookupId(); 

Как сделать этот шаг дальше для создания объекта пользователя sp?

В конечном итоге я пытаюсь получить информацию из списка, а затем заполнить редактор людей.

ответ

0

Людей поле (на самом деле называется «люди сборщик») имеет определенную функцию JavaScript, который вы могли бы оказаться полезным:

Там есть хорошая статья на MSDN: How to: Use the client-side People Picker control in apps for SharePoint

Соответствующий код:

// Get the people picker object from the page. 
var peoplePicker = this.SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan; 

// Get information about all users. 
var users = peoplePicker.GetAllUserInfo(); 
var userInfo = ''; 
for (var i = 0; i < users.length; i++) { 
    var user = users[i]; 
    for (var userProperty in user) { 
     userInfo += userProperty + ': ' + user[userProperty] + '<br>'; 
    } 
} 
$('#resolvedUsers').html(userInfo); 

// Get user keys. 
var keys = peoplePicker.GetAllUserKeys(); 
$('#userKeys').html(keys); 

Так в основном вы должны бросить свое поле к SPClientPeoplePicker, а затем можно использовать GetAllUserInfo для перебора всех пользователей в этой области.

+0

Спасибо, но я думаю, что вы неправильно поняли. Я извлекаю значение человека из элемента списка, а не сборщика. Я прочитал статью, которую вы указали. –

+0

Я неправильно понял, но ваш код особенно get_lookupValue() должен работать: http://stackoverflow.com/questions/8892999/how-to-read-a-column-type-spuser-datetime-currency-with-ecmascript –

+0

Где Я запутался в том, что поиск возвращает значение SP.FieldUserValue - $ 1A_1: 11 $ 2Z_1: «Phillip Hill» __proto__: Object Как получить объект пользователя из этого, чтобы я мог, например, получить адрес электронной почты этого пользователя? Затем я могу использовать это, чтобы установить сборщик людей. Все, что я пытаюсь сделать, это получить от пользователя столбец в объявлении списка, заполнив сборщик людей этим человеком. Мне явно не хватает чего-то очевидного. –

3

Хорошо, у меня это есть.

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

var _lineManager; 

var lineManager = oListItem.get_item("RecruitingManager").get_lookupId(); 

_lineManager = oWebsite.getUserById(lineManager); 

getLineManager(); 

function getLineManager() { 
    context.load(_lineManager); 
    context.executeQueryAsync(onGetUserNameSuccessLM, onGetUserNameFailLM); 
} 
function onGetUserNameSuccessLM() { 
    alert(lineManager.get_title()); 

    var schema = {}; 
    schema['PrincipalAccountType'] = 'User,DL,SecGroup,SPGroup'; 
    schema['SearchPrincipalSource'] = 15; 
    schema['ResolvePrincipalSource'] = 15; 
    schema['AllowMultipleValues'] = false; 
    schema['MaximumEntitySuggestions'] = 50; 
    schema['Width'] = '280px'; 

    var users = new Array(1); 
    var defaultUser = new Object(); 
    defaultUser.AutoFillDisplayText = lineManager.get_title(); 
    defaultUser.AutoFillKey = lineManager.get_loginName(); 
    defaultUser.Description = lineManager.get_email(); 
    defaultUser.DisplayText = lineManager.get_title(); 
    defaultUser.EntityType = "User"; 
    defaultUser.IsResolved = true; 
    defaultUser.Key = lineManager.get_loginName(); 
    defaultUser.Resolved = true; 
    users[0] = defaultUser; 

    SPClientPeoplePicker_InitStandaloneControlWrapper('peoplePickerDivLinMan', users, schema); 

} 

function onGetUserNameFailLM(sender, args) { 
    alert('Failed to get user name. Error:' + args.get_message()); 
}