Besoin d'aide - Comment mettre à jour listitem de type utilisateur dans sharepoint 2010?
-
16-10-2019 - |
Question
Je suis en train de mettre à jour une liste qui est avec champ de type de contenu utilisateur, où je gardais les utilisateurs nom sélectionné du sélecteur de personnes.
Maintenant, mon exigence est d'ajouter / supprimer une personne particulière à cet élément de la liste. J'essaie ce code pour ajouter une personne, mais il enlève tous les autres utilisateurs et l'ajout d'un nouvel utilisateur dans la liste ..: (
Je suis en mesure d'ajouter l'utilisateur dans le groupe mais il n'obtient pas ajouté dans le listitem.
Voici mon extrait de code ::
SPWeb myweb = site.OpenWeb (); myweb.AllowUnsafeUpdates = true; SPGroup membersgroup = myweb.SiteGroups [ "GroupName"];
if (SPContext.Current.Site.OpenWeb().CurrentUser != null && membersgroup != null)
{
membersgroup.AddUser(SPContext.Current.Site.OpenWeb().CurrentUser);
SPRoleDefinition role = myweb.RoleDefinitions["Contribute"];
SPRoleAssignment roleAssignment = new SPRoleAssignment(membersgroup);
roleAssignment.RoleDefinitionBindings.Add(role);
myweb.BreakRoleInheritance(true);
myweb.RoleAssignments.Add(roleAssignment);
myweb.Update();
SPList settingsLists = myweb.Lists["CommunitySettings"];
SPListItem itemToUpdate = settingsLists.Items[0];
itemToUpdate["MembersJoined"] = SPContext.Current.Site.OpenWeb().CurrentUser;
itemToUpdate.Update();
settingsLists.Update();
}
myweb.AllowUnsafeUpdates = false;
S'il vous plaît me aider à ajouter et de supprimer également l'utilisateur.
Merci d'avance.
Voici la réponse ...
myweb.AllowUnsafeUpdates = true;
SPGroup membersgroup = myweb.SiteGroups[string.Format("{0}-Member", myweb.Title)];
if (SPContext.Current.Site.OpenWeb().CurrentUser != null && membersgroup != null)
{
membersgroup.AddUser(SPContext.Current.Site.OpenWeb().CurrentUser);
SPRoleDefinition role = myweb.RoleDefinitions["Contribute"];
SPRoleAssignment roleAssignment = new SPRoleAssignment(membersgroup);
roleAssignment.RoleDefinitionBindings.Add(role);
myweb.BreakRoleInheritance(true);
myweb.RoleAssignments.Add(roleAssignment);
myweb.Update();
SPList settingsLists = myweb.Lists["CommunitySettings"];
SPListItem itemToUpdate = settingsLists.Items[0];
SPUser currentUser = SPContext.Current.Site.OpenWeb().CurrentUser;
SPFieldUserValue userValue = new SPFieldUserValue(myweb, currentUser.ID, currentUser.Name);
Microsoft.SharePoint.SPFieldUserValueCollection collection = (Microsoft.SharePoint.SPFieldUserValueCollection)itemToUpdate["MembersJoined"];
collection.Add(userValue);
itemToUpdate["MembersJoined"] = collection;
itemToUpdate.Update();
settingsLists.Update();
}
myweb.AllowUnsafeUpdates = false;
La solution
Vous ne devriez pas prendre toutes ces appels à OpenWeb () - vérifiez vos habitudes d'élimination. Beaucoup d'informations sur que si vous effectuez une recherche Google.
Thant de côté, pour définir la valeur sur l'élément, I pense vous voulez quelque chose comme
SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;
Autres conseils
Util classe SPFieldUserValue
.
http://msdn.microsoft.com/en- nous / bibliothèque / microsoft.sharepoint.spfielduservalue.aspx