Нужна помощь - как обновить список пользователя типа в SharePoint 2010?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/15433

Вопрос

Я пытаюсь обновить список, в котором есть поле типа пользовательского контента, где я сохраняю имя пользователей, выбранное от People Picker.

Теперь мое требование состоит в том, чтобы добавить/удалить конкретного человека в этот список. Я пробую этот код, чтобы добавить человека, но он удаляет всех других пользователей и добавляет нового пользователя в список .. :(

Я могу добавить пользователя в группу, но он не добавляется в список.

Вот мой фрагмент кода ::

Spweb myweb = site.openweb (); myweb.allowunsafeupdates = true; Spgroup membergroup = 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;

Пожалуйста, помогите мне добавить, а также удалить пользователя.

заранее спасибо.


Вот ответ ...

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;
Это было полезно?

Решение

Вы не должны делать все эти вызовы в OpenWeb () - проверьте шаблоны утилизации. Много информации об этом, если вы ищете Google.

В сторону, чтобы установить значение на элемент, я считать Вы хотите что -то вроде

SPUser currentUser = ...
SPFieldUserValue f = new SPFieldUserValue();
f.User = currentUser;
item["MembersJoined"] = f;

Другие советы

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top