12
votes

Comment obtenir l'objet utilisateur SharePoint à partir du champ "Assigné" à l'aide du modèle d'objet côté client?

J'utilise le modèle d'objet côté client géré dans SharePoint 2010. Et je veux obtenir loginaname de la liste des utilisateurs à la liste des tâches.

dans le modèle d'objet côté serveur I utilise spfielguervalue.user.loginname pour obtenir cette propriété mais dans le modèle d'objet côté client Fielduerservalue.User n'existe pas.

Comment puis-je résoudre cette situation?

merci


0 commentaires

4 Réponses :


3
votes

Vous obtenez la colonne qui, comme le championnalservalue de la liste, une fois que vous avez utilisé la valeur d'identification de la recherche, puis sur la liste des informations utilisateur Sites. Dans l'exemple ci-dessous, je cache les résultats pour éviter de rechercher le même identifiant plus d'une fois que la requête peut être chère. xxx


0 commentaires

14
votes

Voici le code pour cela. J'ai pris un exemple de champ attribué à partir de la liste des tâches. J'espère que cela aide.

    public static User GetUserFromAssignedToField(string siteUrl)
    {
        // create site context
        ClientContext ctx = new ClientContext(siteUrl);

        // create web object
        Web web = ctx.Web;
        ctx.Load(web);

        // get Tasks list
        List list = ctx.Web.Lists.GetByTitle("Tasks");
        ctx.Load(list);

        // get list item using Id e.g. updating first item in the list
        ListItem targetListItem = list.GetItemById(1);

        // Load only the assigned to field from the list item
        ctx.Load(targetListItem,
                         item => item["AssignedTo"]);
        ctx.ExecuteQuery();

        // create and cast the FieldUserValue from the value
        FieldUserValue fuv = (FieldUserValue)targetListItem["AssignedTo"];

        Console.WriteLine("Request succeeded. \n\n");
        Console.WriteLine("Retrieved user Id is: {0}", fuv.LookupId);
        Console.WriteLine("Retrieved login name is: {0}", fuv.LookupValue);

        User user = ctx.Web.EnsureUser(fuv.LookupValue);
        ctx.Load(user);
        ctx.ExecuteQuery();

        // display the user's email address.
        Consol.writeLine("User Email: " + user.Email);

        return user;
    }


3 commentaires

LookupValue me donne le nom d'affichage et non le nom de connexion.


Comment obtenir l'identifiant d'email ici?


@Samolpp - L'objet utilisateur dispose d'une propriété de messagerie pouvant être utilisée pour afficher l'adresse e-mail. Voir cette documentation - docs.microsoft.com/en-us/previous-versions/Office/...



1
votes

Tout ce qui précède a travaillé pour moi, mais au lieu de:

Fielduerservalue fuv = (championnaire) Targetlistitem ["assigné"];

J'ai utilisé:

Fielduerservalue [] FUV = TargetLisTem ["assigné"] comme champ de siteValue [];


0 commentaires

9
votes

Le fuv.lookupvalue peut contenir le nom d'affichage, pas le nom de connexion, donc ma suggestion est (en supposant que vous disposez du champ Fielduerservalue - FUV en code (comme décrété par @ekhanna): xxx


2 commentaires

Désolé, cela ne fonctionne pas: Microsoft.SharePoint.client.ServerException s'est produit / L'utilisateur spécifié 5651 n'a pas pu être trouvé.


Cela signifie qu'il n'y a pas d'utilisateur avec cet identifiant. Assurez-vous que vous utilisez l'ID de l'utilisateur et non l'index de l'utilisateur dans la collection SitesUners.