Pregunta

Estoy tratando de actualizar una lista que tenga un campo de tipo de contenido de usuario, donde estoy guardando el nombre de los usuarios seleccionado del selector de personas.

Ahora mi requisito es agregar/eliminar a una persona en particular en ese elemento de lista. Estoy intentando este código para agregar una persona, pero está eliminando a todos los demás usuarios y agregar nuevos usuarios en la lista ... :(

Puedo agregar al usuario al grupo, pero no se agrega al ListItem.

Aquí está mi fragmento de código ::

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;

Ayúdame a agregar y eliminar al usuario.

gracias de antemano.


Aquí está la respuesta ...

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;
¿Fue útil?

Solución

No debería hacer todas esas llamadas a OpenWeb (): verifique sus patrones de eliminación. Mucha información sobre eso si busca en Google.

A un lado, para establecer el valor en el artículo, yo pensar quieres algo como

SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;
Licenciado bajo: CC-BY-SA con atribución
scroll top