سؤال

كجزء من تطبيق SharePoint المستضيف، فأنا أستخدم قائمة تحتوي على شخص أو مجموعة.أحصل على معرف الشخص باستخدام ما يلي. giveacodicetagpre.

من هنا، أرغب الآن في الحصول على اسم الأشخاص أو "DisplayText"، لكن يمكنني العثور على أي شيء عميل يفعل هذا في MSDN.

هل يمكن القيام بذلك؟

هل كانت مفيدة؟

المحلول

I assume in your example Approver is a User field type. In SharePoint 2013 CSOM SP.FieldUserValue object represents the value of a user field for a list item.

The following code demonstrates how to get User Name from User field:

//Get user field value
var assignedToVal = item.get_item('AssignedTo');
var userName = assignedToVal.get_lookupValue();   
console.log(userName);


//Get multi user field value
var assignedToVals = item.get_item('AssignedTo');
for(var i = 0; i < assignedToVals.length;i++) {
     var userName = assignedToVals[i].get_lookupValue();   
     console.log(userName);
}

نصائح أخرى

You need to reference following JavaScript file:

<SharePoint:ScriptLink ID="ScriptLink2" name="SP.UserProfiles.js" runat="server"
    ondemand="false" localizable="false" loadafterui="true" />

Than you can access the User Profile Properties as follows:

var personProperties;

// Ensure that the SP.UserProfiles.js file is loaded before the custom code runs.
SP.SOD.executeOrDelayUntilScriptLoaded(getUserProperties, 'SP.UserProfiles.js');

function getUserProperties() {

    // Replace the placeholder value with the target user's credentials.
    // var targetUser = "domainName\\userName";
    var targetUser = currentItem.get_fieldValues()["Approver"].get_lookupValue();

    // Get the current client context and PeopleManager instance.
    var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

    // Get user properties for the target user.
    // To get the PersonProperties object for the current user, use the
    // getMyProperties method.
    personProperties = peopleManager.getPropertiesFor(targetUser);

    // Load the PersonProperties object and send the request.
    clientContext.load(personProperties);
    clientContext.executeQueryAsync(onRequestSuccess, onRequestFail);
}

// This function runs if the executeQueryAsync call succeeds.
function onRequestSuccess() {

    // Get a property directly from the PersonProperties object.
    var messageText = " \"DisplayName\" property is "
        + personProperties.get_displayName();

    // Get a property from the UserProfileProperties property.
    messageText += "<br />\"Department\" property is "
        + personProperties.get_userProfileProperties()['Department'];
    $get("results").innerHTML = messageText;
}

// This function runs if the executeQueryAsync call fails.
function onRequestFail(sender, args) {
    $get("results").innerHTML = "Error: " + args.get_message();
}

Reference:

How to: Retrieve user profile properties by using the JavaScript object model in SharePoint 2013

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى sharepoint.stackexchange
scroll top