Frage

Ich versuche, eine Liste zu aktualisieren, in der das Feld "Benutzerinhaltstyp" enthält, in dem ich den Benutzernamen von People Picker speichere.

Jetzt ist es meine Anforderung, eine bestimmte Person in dieses Listenelement hinzuzufügen/zu entfernen. Ich versuche diesen Code, um eine Person hinzuzufügen, aber er entzieht alle anderen Benutzer und füge neuen Benutzer in der Liste hinzu. :(

Ich kann den Benutzer in die Gruppe hinzufügen, aber er wird nicht in das ListItem hinzugefügt.

Hier ist mein Code -Snippet ::

SPWeb myWeb = Site.openweb (); myweb.allowunsafeupdates = true; SPGroup -Mitgliedergroup = 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;

Bitte helfen Sie mir beim Hinzufügen und Entfernen des Benutzers.

vielen Dank im Voraus.


Hier ist die Antwort ...

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;
War es hilfreich?

Lösung

Sie sollten nicht all diese Anrufe bei OpenWeb () tätigen - überprüfen Sie Ihre Entsorgungsmuster. Viele Informationen dazu, wenn Sie Google durchsuchen.

Abgesehen davon, um den Wert auf den Artikel festzulegen, ich denken Du willst so etwas wie

SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top