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;
Était-ce utile?

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;
Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top