2

javascriptを使用して人物列からユーザー情報を取得するのを手伝ってくれる人はいますか? これまでのところ、リスト アイテムを読み取って SP.FieldUserValue を返すことができました。この値から、数値 ID (この ID が何であるかはわかりません) と表示名を取得できます。例えば

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

これをさらに一歩進めて、sp ユーザー オブジェクトを作成するにはどうすればよいですか?

最終的に私が達成しようとしているのは、リストから詳細を取得し、ピープル エディターに入力することです。

4

2 に答える 2

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());
}
于 2013-07-18T09:59:44.343 に答える
0

person フィールド (実際には "people picker" と呼ばれます) には、役に立つと思われる特定の JavaScript 関数があります。GetAllUserInfo()

MSDN にすばらしい記事があります: 方法: 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);

したがって、基本的にフィールドを a にキャストする必要があり、フィールド内のすべてのユーザーを反復処理するためにSPClientPeoplePicker使用できます。GetAllUserInfo

于 2013-07-17T08:19:55.377 に答える