Получите разрешенные идентификаторы SPUser из Sharepoint 2010 PeoplePicker

Я пытаюсь получить выбранные идентификаторы пользователей из средства выбора людей, как показано ниже:

function GetUserIdsFromPP() {
    var xml = _picker.find('div#divEntityData');
    var visiblefor = new Array();

    xml.each(function (i, row) {
        var data = $(this).children().first('div').attr('data');
        var xmlDoc;

        if (window.DOMParser) {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(data, "text/xml");
        }
        else // Internet Explorer
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML(data);
        }
        var uid = xmlDoc.getElementsByTagName('Value')[0].firstChild.nodeValue;
        visiblefor.push(uid);
    });

    return visiblefor;
}

Проблема в том, что иногда XML не содержит <Key>SPUserID</Key><Value>1</Value> и я получаю FQUN (логин пользователя с доменным именем).

Каков наилучший способ разрешить выбранные идентификаторы SPUserId из элемента управления PeoplePicker?


person marcinn    schedule 15.10.2012    source источник


Ответы (2)


Вот как разрешаются электронные письма от управления выбором людей на стороне клиента

function GetEmailsFromPicker() {
    var xml = _picker.find('div#divEntityData');
    var result = new Array();

    xml.each(function (i, row) {
        var data = $(this).children().first('div').attr('data');
        var xmlDoc;

        if (window.DOMParser) {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(data, "text/xml");
        }
        else // Internet Explorer
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML(data);
        }

        var emailIndex = -1;

        for (var i = 0; i < xmlDoc.childNodes[0].childNodes.length; i++) {
            var element = xmlDoc.childNodes[0].childNodes[i];
            var key = element.childNodes[0].childNodes[0].nodeValue;
            if (key == 'Email') {
                var uid = xmlDoc.childNodes[0].childNodes[i].childNodes[1].childNodes[0].nodeValue;
                result.push({ EMail: uid });
                break;
            }
        }
    });

    return result;
}
person marcinn    schedule 19.10.2012

Используйте приведенный выше ответ, но...

Замените это соответствующим именем элемента Jquery или Javascript.

var xml = _picker.find('div#divEntityData');
person Jack    schedule 22.06.2021