1

以下のように、ユーザー ピッカー コントロールから選択したユーザー ID を取得しようとしています。

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 (ドメイン名によるユーザー ログイン) を取得することです。

PeoplePicker コントロールから選択した SPUserIds を解決するより良い方法は何ですか?

4

2 に答える 2

1

これは、クライアント側のピープルピッカーコントロールからのメールを解決する方法です

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;
}
于 2012-10-19T11:47:06.513 に答える