質問

I have a SharePoint-Field of type string, that contains a value such as:

domain\usertoken

From the string I would like to retrieve the person - and from the person I would like to retrieve some user data, such as firstname and lastname.

Is there any way to ensure the user beyond the string in JSLink-context and then retrieve some user data?

My latest (failed) attempt looks like this (the relevant part is in function CustomFieldAktuellerGenehmiger(ctx)):

(function () {


    var globalOverrideCtx = {
        Templates: {
            OnPreRender:function(renderCtx){
                var visibleFields = ['Status','Aktueller_Genehmiger'];
                var fieldsCount = renderCtx.ListSchema.Field.length;
                for (var fieldIndex = fieldsCount - 1; fieldIndex >= 0; fieldIndex--) {
                    var field = renderCtx.ListSchema.Field[fieldIndex];                 
                    if(visibleFields.indexOf(field.Name)==-1){
                        renderCtx.ListSchema.Field.splice(fieldIndex, 1);
                    }
                }
            },
            Fields: {
                'Aktueller_Genehmiger':{
                    'View': CustomFieldAktuellerGenehmiger
                },  
            }
        }
    };
    SPClientTemplates.TemplateManager.RegisterTemplateOverrides(globalOverrideCtx);
})();

function CustomFieldAktuellerGenehmiger(ctx){
    var return3;

    var user = ctx.CurrentItem.Aktueller_Genehmiger;

    var context = SP.ClientContext.get_current();
    var web = context.get_web();

    // This currently returns: TypeError: Cannot read property 'get_current' of undefinedTypeError: Cannot read property 'get_current' of undefinedTypeError: Cannot read property 'get_current' of undefined
    var user = context.web.EnsureUser("cznet\zoshaeh");


    return3 = testuser;

    return return3;

}

This currently returns:

TypeError: Cannot read property 'get_current' of undefined

I don't know how to get the relevant context in JSLink.

Update: I have also tried:

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function(){
var context = SP.ClientContext.get_current();
var web = context.get_web();
var user = context.web.EnsureUser("domain\usertoken");
console.log(user);
})

This returns:

Uncaught TypeError: Cannot read property 'EnsureUser' of undefined

役に立ちましたか?

解決

You could try to use this to wrap your code uesd ClientContext.

SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function(){})

Updated:

This code I have used for your reference:

<script type="text/javascript">
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', function(){
  var testCase=function(callback){      
        var clientContext = SP.ClientContext.get_current();
        var user = clientContext.get_web().get_currentUser();
        clientContext.load(user);
        clientContext.executeQueryAsync(function(){     
        callback(null,user.get_loginName()) ;          
        },function(sender,args){alert(args.get_message());})
    }

    }) 
</script>

similar issue: https://www.enjoysharepoint.com/uncaught-typeerror-cannot-read-property-get_current-of-undefined/

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top