2012-02-28 2 views
0

Je suis nouveau sur SharePoint. Désolé si la réponse à ma question est évidente.SPWorkflowTaskProperties.AssignedTo et le format "1; #Alice Jackson"

Je n'arrive pas à comprendre, comment affecter une tâche à un utilisateur par programmation. Je définis les propriétés dans SPWorkflowTaskProperties, toutes les propriétés passent à Task, mais pas la propriété de chaîne AssignedTo.

//next variants don't works 
TaskProperty.AssignedTo = "1;#Michael Pushin"; 
TaskProperty.AssignedTo = "Michael Pushin";  
TaskProperty.ExtendedProperties["Assigned To"] = "1;#Michael Pushin"; 

J'essaie de réaliser un modèle de délégation. Pour cela, je lis les informations de l'élément de liste qui ont le type de champ Personne.

SPList functList = thisWeb.Lists["Functions"]; 
SPListItem functItem = functList.GetItemById(1); 
object person = functItem["Default Assignee"]; 
string assignee = person.ToString(); 
//At this point assignee equals "1;#Michael Pushin" 

Quand je tournerai le "Assigned To" par les mains et lire sa valeur par programmation égale à "1; #Michael Pushin" aussi.

Comment puis-je définir par programmation le champ "Affecté à" à partir de la valeur de la variable de personne?

Merci d'avance.

PS: désolé pour mon écriture. L'anglais n'est pas ma langue maternelle.

PPS: SharePoint 2010.

+0

Lorsque je définis TaskProperty.AssignedTo = "MYDOMAIN \\ michael.pushin" tous les travaux, mais comment puis-je convertir les données du format "1; #Michael Pushin" à approprié? TaskProperty.AssignedTo = "MYDOMAIN \\ Michael Pushin" ne fonctionne pas – MikhailSP

Répondre

3

Ne pas convertir personne à chaîne.

object person = functItem["Default Assignee"]; 

À ce stade, la personne est comme SPFieldUserValue. Diffusez le type réel et voyez si vous pouvez en extraire SPUser, puis récupérez le fichier SPUser.Login.

+0

Non, à ce stade, le type réel de la personne objet est déjà une chaîne. Peut-être existe une autre façon d'obtenir l'élément dans smth comme type SPFieldUserValue? Ou Comment puis-je le rechercher? Peut-être que je dois utiliser ID = 1 (** 1 **; # Michael Pushin) pour l'obtenir par consultation, mais où? – MikhailSP

+0

Merci pour votre réponse – MikhailSP

+0

var login = (new SPFieldUserValue (spWeb, asignee)). User.Login; –

1

J'ai trouvé une solution! Merci à ce poste: http://blogs.windowsclient.net/mortezanaeimabadi/archive/2011/09/17/how-to-obtain-spuser-object-from-values-such-as-quot-27-morteza-quot.aspx

SPFieldUserValue userValue = new SPFieldUserValue(SPContext.Current.web, functItem["Default Assignee"].ToString()); 
SPUser userObject = userValue.User; 
string asignee=userObject.ToString(); 
//hurray! asignee="MYDOMAIN\\michael.pushin" 
+0

C'est exactement pareil que ma réponse est ... –

0

je trouve que cela fonctionne tout en mettant l'utilisateur affecté par un flux de travail:

  taskProperties.AssignedTo = workflowProperties.OriginatorUser.LoginName; 
0

cela a fonctionné pour moi

SPFieldUserValue userValue = new SPFieldUserValue(SPContext.Current.web,  
functItem["Default Assignee"].ToString()); 
SPUser userObject = userValue.User; 
string asignee=userObject.ToString() 

merci Mikhail!

+0

Hey Jase, ceci devrait vraiment être un commentaire. – Mathemats

Questions connexes