2011-02-09 5 views
1

Je récupère une liste de noms d'une liste SharePoint dans mon programme client. Les noms sont renseignés à partir d'un sélecteur de nom dans SharePoint. Dans le code XML retourné de la requête de la liste, la liste ressemble à ceci:Comment puis-je obtenir un profil utilisateur SharePoint via le "Nom convivial" en utilisant le service Web SP?

"#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName" 

Mon programme a besoin d'obtenir le nom du compte (ou l'adresse e-mail) de chaque utilisateur. Je peux utiliser GetUserProfileByName("domain\\username"), mais je n'ai pas le nom du compte. Je ne peux pas faire quelque chose comme GetUserProfileByName("Some Name") parce que cela doit être le nom du compte.

Le numéro avant chaque nom est l'index ou l'ID, mais je ne peux pas utiliser GetUserProfileByIndex(10) car je dois gérer mes propres données ou avoir des informations d'identification d'administrateur. Donc, fondamentalement, il me fournit deux informations importantes, mais je ne peux pas obtenir d'autres informations en les utilisant.

+0

Avez-vous le contrôle de cette liste qui a la liste des noms? – Shoban

+0

Un peu. Pensez-vous qu'il existe un moyen de changer la façon dont la liste est présentée (comme fournir des noms de compte au lieu de noms complets)? – CMPalmer

+0

Oui !!! il y a l'option. Choisissez le type pour la colonne en tant que personnes et groupe et définissez "Afficher le champ" à compte. Vous obtiendrez les détails du compte :) – Shoban

Répondre

0

J'ai une solution très salissante qui fonctionne, mais j'aimerais avoir quelques idées pour une solution appropriée/élégante.

En ce moment je suis en utilisant GetListItems sur la liste UserInfo et la création d'un dictionnaire de ows_ImnName et ows_Name entrées, puis analyse de la chaîne de la requête de la liste dans les noms et les utiliser comme valeurs de référence.

Il a pour être un meilleur moyen.

1

Etes-vous sûr que le numéro est un index, je pense qu'il peut s'agir du nom d'utilisateur de la collection de sites. Et il semble être une sorte de liste d'utilisateur étrange, mais de toute façon:

string result = "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName"; 
string[] users = result.Substring(1).Split(new string[2] { ";", "#" }, StringSplitOptions.RemoveEmptyEntries); 
for (int j = 0; j < users.Length; j = j + 2) { 
    using (ClientContext context = new ClientContext("http://yoursite")) { 
     List list = context.Web.SiteUserInfoList; 
     ListItem item = list.GetItemById(int.Parse(users[j])); 
     context.Load(item, i => i.Id, i => i["Name"]); 
     context.ExecuteQuery(); 
     object username = item["Name"]; 
    } 
} 
+0

Je vais essayer et vous faire savoir ... – CMPalmer

Questions connexes