SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Zugriff auf anderes Userprofile erst nach Seitenrefresh.

Unbeantwortet Dieser Beitrag hat 2 Antworten

Ohne Rang
3 Beiträge
ThomasW erstellt 16 Juli 2015 14:06
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo Sharepointgemeinde

Ich versuch ja eigentlich immer erstmal selbst die Lösung zu finden, aber ich komme einfach nicht weiter.Hab noch nicht sehr lang mit Sharepoint zu tun, so das mir die ein oder andere Info fehlt.

Nun zu meinem Problem. Ich habe eine Suchseite für Personen. Wenn ich mit der Maus über eine Person fahre, bekomme ich vordefinierte Daten zu der Person angezeigt. Unter anderem auch der Manager, der in der Form "domäne\accountname" angezeigt wird. hier soll aber der Displayname angezeigt werden.

Dazu habe ich ein Script eingebaut, welches dies erledigt. Das Problem ist nun folgendes. Wenn die Seite zum ersten mal geöffnet wird, dann bekomme ich die Fehlermeldung das die Methode "get_context" nicht unterstützt wird. Aktualisiere ich die Seite funktioniert es tadellos.

Ich habe bereits alles Varianten die ich im Netz gefunden habe ausprobiert, aber es ist immer das gleiche.

Die Funktion rufe ich im hover Template auf und übergebe den Accountname des Managers und die ID des HTML-Elements. Das Script selbst befindet sich in einem Sripteditor.

 

<script type="text/javascript">

SP.SOD.registerSod('sp.js', '/_layouts/15/sp.js');
SP.SOD.executeFunc('sp.js', false, function(){});
SP.SOD.registerSod('sp.userprofiles.js', '/_layouts/15/SP.UserProfiles.js');
SP.SOD.executeFunc('sp.userprofiles.js', false, function(){});

function getManagerDisplayName(accountName, id) {

ExecuteOrDelayUntilScriptLoaded(
    function()
    {
        ExecuteOrDelayUntilScriptLoaded(
            function()
            {
                var context = SP.ClientContext.get_current();
                var peopleManager = new SP.UserProfiles.PeopleManager(context);

                var profilePropertyNames = ["PreferredName", "Department","WorkEmail"];
                var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(
                            context,
                            accountName,
                            profilePropertyNames);
                var userProfileProperties = peopleManager.getUserProfilePropertiesFor(userProfilePropertiesForUser);

                context.load(userProfilePropertiesForUser);

                context.executeQueryAsync(
                function(){
                    //print user profile properties
                    $("#" + id).text(userProfileProperties[0]);
                },
                function(sender,args){
                   alert(args.get_message());   
                });
            }, 'SP.UserProfiles.js')
       
    }, 'SP.js');
}

</script>

 

Brauche dringend Hilfe bei diesem Problem.

 

Gruß

 

Thomas

 

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 17 Juli 2015 08:31
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Mit dem SOD-Geraffel habe ich mich auch schon zu Tode geärgert. Eigentlich hast Du alles richtig gemacht und es sollte funktionieren. Tut es nur manchmal nicht :-(

Am einfachsten behilfst Du Dir, indem Du auf der Seite die notwendigen Scripte einfach fest einbindest. Also in einem Script-Editor ganz simpel ein
<script type="text/javascript" src="..."></script>

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
3 Beiträge
ThomasW Als Antwort am 17 Juli 2015 08:55
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hi Andi

Danke für die Antwort. Das beruhigt mach etwas, das ich nicht ganz so falsch liege. Ich hab schon alles versucht. Direkt im Template und auch im Scripteditor. Immer das gleiche Problem.

Es funktioniert ja auch, nur nicht wenn die Seite zum ersten Mal geöffnet wird. Hab mich jetzt Stück für Stück auf die Suche begeben und hab herausgefunden, das die Zeile

                var userProfilePropertiesForUser = new SP.UserProfiles.UserProfilePropertiesForUser(
                            context,
                            accountName,
                            profilePropertyNames);

beim ersten mal, nicht das erzeugt was es soll. Im Object userProfilePropertiesForUser sollte es die Funktion get_context() geben. Diese ist aber nicht da. Die Parameter habe ich überprüft. Da ist alles schick.

Jetzt bin ich zwar weiter, aber immer noch ratlos.

 

Gruß

Thomas