Hai bisogno di aiuto - Come aggiornare listitem di tipo utente in SharePoint 2010?
-
16-10-2019 - |
Domanda
Sto cercando di aggiornare un elenco che sta avendo contenuti utente tipo di campo, dove sto risparmiando agli utenti nome selezionato dalla gente raccoglitrice.
Ora la mia esigenza è quella di aggiungere / rimuovere una particolare persona in quella voce di elenco. Sto cercando il codice per aggiungere una persona, ma è la rimozione di tutti gli altri utenti e l'aggiunta di nuovi utenti nella lista ..: (
Sono in grado di aggiungere l'utente nel gruppo ma non è sempre aggiunto nella listitem.
Ecco il mio frammento di codice ::
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;
Si prega di aiutarmi in aggiunta e la rimozione anche l'utente.
grazie in anticipo.
Ecco la risposta ...
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;
Soluzione
Non si dovrebbe fare tutte quelle chiamate a OpenWeb () - controllare i vostri modelli di smaltimento. Un sacco di informazioni su che se si ricerca su Google.
Thant a parte, per impostare il valore sulla voce, ho che si desidera qualcosa di simile
SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;
Altri suggerimenti
class SPFieldUserValue
Usr.
http://msdn.microsoft.com/en- us / library / microsoft.sharepoint.spfielduservalue.aspx