vendredi 20 février 2009

[SharePoint 2007] Récuperer un SPUser à partir de la valeur d'un colonne de type Personne

Pour le développement d'un workflow SharePoint, j'avais besoin de créer dynamiquement une tâche et de l'assigner à un utilisateur sélectionné, via une colonne de type Personne, lors de la création de l'élément qui déclenche mon workflow.

Et là problème: la valeur que je récupère de ma colonne est une chaîne de caractères du type "18;#NOM, Prénom" (l'id du SPUser et le display name).

Or pour assigner ma tâche, j'ai besoin de lui spécifier le login name de l'utilisateur, c'est à dire "DOMAIN\username".

C'est un problème que j'avais déjà rencontré lors du développement d'event handlers.

Voici un petit bout de code qui permet de récupérer l'objet SPUser à partir de la valeur stockée dans une colonne de type Personne:

string columnName = "Nom de ma colonne";
string columnValue = workflowProperties.Item[columnName].ToString();
SPFieldUser userField = (SPFieldUser)workflowProperties.List.Fields.GetField(columnName);
SPFieldUserValue fieldValue = (SPFieldUserValue)userField.GetFieldValue(columnValue);
SPUser user = fieldValue.User;


Ici, je récupère l'objet SPList concernée et la valeur de ma colonne via mes WorkflowProperties, mais dans le cas d'un Event Handler, je les aurai récupérés via les SPItemEventProperties.

Ensuite, avec mon SPUser, je peux récupérer toutes les infos dont j'ai besoin, notamment le LoginName.

Aucun commentaire:

Enregistrer un commentaire