Benötigen Sie Hilfe - Wie aktualisiert ich ListItem des Typs des Typs in SharePoint 2010?
-
16-10-2019 - |
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;
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;
Andere Tipps
USR SPFieldUserValue
Klasse.
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduservalue.aspx