Нужна помощь - как обновить список пользователя типа в SharePoint 2010?
-
16-10-2019 - |
Вопрос
Я пытаюсь обновить список, в котором есть поле типа пользовательского контента, где я сохраняю имя пользователей, выбранное от 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;
Другие советы
USR SPFieldUserValue
учебный класс.
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfielduservalue.aspx