Изменить описание группы SharePoint - PullRequest
3 голосов
/ 09 июня 2009

Я пытаюсь изменить описание существующей группы SharePoint, которая не должна быть очень трудной, но, к сожалению, она не работает должным образом. После запуска соответствующего метода описание группы остается прежним.

Вот код, который я использую для изменения описания:

private void ResetGroupDescription(SPWeb rootWeb, string groupName, string groupDescription)
{            
    rootWeb.AllowUnsafeUpdates = true;

    SPGroup group = rootWeb.SiteGroups[groupName];
    group.Description = groupDescription;
    group.Update();

    rootWeb.Update();
    rootWeb.AllowUnsafeUpdates = false;

    // Code-Update
    SPGroup checkGroup = rootWeb.SiteGroups[groupName];
    Trace.WriteLine(checkGroup.Description);
}

UPDATE:

Я добавил еще несколько строк кода в свой метод и получил группу, которую я перед этим изменил, еще раз, чтобы проверить свойство description. Это показывает мне, что описание группы было изменено, как и ожидалось. Но когда я пытаюсь проверить это, проверив описание группы на странице настроек группы (UI) соответствующего семейства сайтов, описание группы остается прежним значением.

ОБНОВЛЕНИЕ 2:

Поэтому я провел еще несколько тестов по этому вопросу и попытался изменить название группы вместо ее описания. Странно сказать, но этот работает отлично. Переименование группы сразу отображается в пользовательском интерфейсе.

Ответы [ 7 ]

9 голосов
/ 12 июля 2009

Я нашел решение на другом форуме. Описание, отображаемое в пользовательском интерфейсе, хранится в UserInformationList. Следующий код изменяет описание группы.

SPGroup g = web.SiteGroups["GroupName"];
SPFieldMultiLineText text = (SPFieldMultiLineText)web.SiteUserInfoList.Fields[SPBuiltInFieldId.Notes];
SPListItem groupItem = web.SiteUserInfoList.GetItemById(g.ID);
groupItem[text.InternalName]= groupDescription;
groupItem.Update();   
2 голосов
/ 09 июня 2009

2 вещи:

Хотите изменить описание или название группы? Есть свойство Name и Description ....

Вы пытались запустить его как другой пользователь? т.е. SPSecurity.RunWithElevatedPrivileges.

1 голос
/ 21 июня 2010

SPWeb. Группы позволит вам извлекать только те группы, которые имеют какие-либо / любые виды разрешений, определенные на сайте.

SPWeb.SiteGroups будет извлекать все межсайтовые группы независимо от любого определенного разрешения.

0 голосов
/ 26 июня 2017

Вы можете попробовать с CSOM (объектная модель на стороне клиента). С помощью приведенного ниже кода я могу обновить название группы, описание и любую другую информацию, которая вам нужна.

using (ClientContext context = new ClientContext("Your Link goes here."))
{
    context.Credentials = new System.Net.NetworkCredential("Your User Name", "Your Password", "Domain name");
    GroupCollection groupCollection = context.Web.SiteGroups;
    context.Load(groupCollection, groups => groups.Include(group => group.Title, group => group.Id, group => group.Users));
    context.ExecuteQuery();
    Group myGroup = groupCollection.GetByName(OldGroupNameTB.Text);
    context.Load(myGroup);
    context.ExecuteQuery();

    List myGroupList = context.Web.SiteUserInfoList;
    context.Load(myGroupList.Fields);
    context.ExecuteQuery();

    FieldMultiLineText text = (FieldMultiLineText)context.Web.SiteUserInfoList.Fields[7];
    ListItem groupItem = context.Web.SiteUserInfoList.GetItemById(myGroup.Id);

    myGroup.Title = NewGroupNameTB.Text;
    groupItem[text.InternalName] = GroupDescrioptionTB.Text;

    groupItem.Update();
    myGroup.Update();
    context.ExecuteQuery();
}
0 голосов
/ 09 июня 2009

Может быть, вам нужно разрешить обновления на SPWeb или SPSite? Обычно это необходимо, если вы делаете не POST, а GET.

0 голосов
/ 09 июня 2009

Убедитесь, что нигде ничего не кэшируется - известно, что неизвестное кэширование доводит совершенно безумных разработчиков до безумия.

0 голосов
/ 09 июня 2009

Этот код должен работать.

Если я сравниваю его с кодом, который я использую, единственное отличие состоит в том, что я использую такой код для извлечения группы. Разницы не должно быть, но может быть ...

    foreach (SPGroup group in web.SiteGroups)
    {
        if (group.Name.Equals(groupName, StringComparison.OrdinalIgnoreCase))
        {
            return group;
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...