Comment mettre à jour les gens sur le terrain?
-
09-12-2019 - |
Question
J'ai suivi du code sur la forme INFOPATH.Toute la colonne est mise à jour dans la liste cible, à l'exception de la colonne Personnes.Le vérifyby ne met pas à jour la colonne de la liste SP.(Dans la liste, je dois afficher le nom).J'ai même essayé displayName au lieu de CompteID.
Quelqu'un peut-il me dire ce que je fais mal.Merci d'avance.
item["LoadDate"] = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpLoad/my:fldLoadDate", NamespaceManager).Value;
item["EndDate"] = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpLoad/my:fldEndDate", NamespaceManager).Value;
item["checkRequired"] = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpLoad/my:fldcRequired", NamespaceManager).Value;
item["VerifiedBy"] = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpDaa/my:CheckedBy/pc:Person/pc:AccountId", NamespaceManager).Value;
La solution
Cela a fonctionné.
item["VerifiedBy"] = web.EnsureUser(MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpDaa/my:CheckedBy/pc:Person/pc:AccountId", NamespaceManager).Value);
Autres conseils
Vous devrez peut-être formater l'utilisateur INFOPATH comme [ID]; # [Nom d'utilisateur]
Peut-être quelque chose comme ...
item["VerifiedBy"] = String.Format("{0};#{1}", MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpDaa/my:CheckedBy/pc:Person", NamespaceManager).Value), MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpDaa/my:CheckedBy/pc:Person/pc:AccountId", NamespaceManager).Value);
Quelques ressources que j'ai trouvées ceci étaient
Vous devez probablement construire la chaîne correcte dans le format suivant: "[UserID]; # [displayName]" ou utilisez une classe SPFieldUserValue pour cela.
Par exemple:
SPUser user = web.EnsureUser(MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:grpDaa/my:CheckedBy/pc:Person/pc:AccountId", NamespaceManager).Value);
item["VerifiedBy"] = new SPFieldUserValue(web, user.ID, user.Name);
Notez que vous pourriez avoir un problème d'autorisation avec la méthode Assurhasser, si l'utilisateur n'est pas ajouté à la collection Site.