2015-09-24 3 views
0

В CSOM (C#) Я создаю дочерний узел и создаю группы SharePoint для владельцев, членов и виртуальных машин.CSOM set «Сделать группу по умолчанию»

Виестры должны быть группой по умолчанию при совместном использовании. В пользовательском интерфейсе вы можете установить Vistors Group по умолчанию, выбрав «Сделать группу по умолчанию» в настройках групп.

Но как вы это делаете в CSOM?

Вот мой текущий код для создания группы

private void SetSecurity(Web web) 
    { 
     CreateGroup($"Besøgende på {web.Title}", $"Denne gruppe giver læserettighed til {web.Title} sitet", AssociatedGroup.Vistors, web); 
     CreateGroup($"Medlemmer af {web.Title}", $"Denne gruppe giver skriverettighed til {web.Title} sitet", AssociatedGroup.Members, web); 
     CreateGroup($"Ejere af {web.Title}", $"Denne gruppe giver fuld kontrol til {web.Title} sitet", AssociatedGroup.Owners, web); 

     SpClientContext.ExecuteQuery(); 
    } 

    private enum AssociatedGroup 
    { 
     Owners, 
     Members, 
     Vistors 
    } 

    private void CreateGroup(string title, string description, AssociatedGroup associatedGroup, Web web) 
    { 
     var groupCreation = new GroupCreationInformation(); 
     groupCreation.Title = title; 
     groupCreation.Description = title; 

     var group = web.SiteGroups.Add(groupCreation); 

     var collRoleDefinitionBinding = new RoleDefinitionBindingCollection(SpClientContext); 

     switch (associatedGroup) 
     { 
      case AssociatedGroup.Owners: 
       web.AssociatedOwnerGroup = group; 
       web.AssociatedOwnerGroup.Update(); 
       var adminRoleDefinition = web.RoleDefinitions.GetByType(RoleType.Administrator); 
       collRoleDefinitionBinding.Add(adminRoleDefinition); 
       break; 

      case AssociatedGroup.Members: 
       web.AssociatedMemberGroup = group; 
       web.AssociatedMemberGroup.Update(); 
       var contributerDefinition = web.RoleDefinitions.GetByType(RoleType.Contributor); 
       collRoleDefinitionBinding.Add(contributerDefinition); 
       break; 

      case AssociatedGroup.Vistors: 
       web.AssociatedVisitorGroup = group; 
       web.AssociatedVisitorGroup.Update(); 
       var vistorDefinition = web.RoleDefinitions.GetByType(RoleType.Reader); 
       collRoleDefinitionBinding.Add(vistorDefinition); 
       break; 
     } 

     web.RoleAssignments.Add(group, collRoleDefinitionBinding); 

     group.Update(); 

     web.Update(); 
    } 

Я попытался установить группу посетителей как AssociatedMemberGroup но не дают нужного результата, так как в пользовательском интерфейсе при обмене будет отображаться к опции Can Edit.

   case AssociatedGroup.Vistors: 
       //web.AssociatedVisitorGroup = group; 
       web.AssociatedMemberGroup = group; 
       web.AssociatedMemberGroup.Update(); 
       var vistorDefinition = web.RoleDefinitions.GetByType(RoleType.Reader); 
       collRoleDefinitionBinding.Add(vistorDefinition); 
       break; 

http://i.stack.imgur.com/J7Ljt.png

Таким образом, любое предложение о том, как в CSOM я могу отметить Группу посетителей в качестве группы по умолчанию при обмене?

ответ

2

В следующем примере показано, как установить группу по умолчанию с помощью CSOM API:

public static void SetDefaultGroup(Group group) 
{ 
    var ctx = group.Context as ClientContext; 
    ctx.Web.AssociatedMemberGroup = group; 
    ctx.Web.Update(); 
    ctx.ExecuteQuery(); 
} 

Использование

var group = ctx.Web.SiteGroups.GetById(groupId); 
SetDefaultGroup(group); 
+0

Я уже попробовал, что, как вы можете увидеть в моем посте. Проверьте изображение: http://i.stack.imgur.com/J7Ljt.png Проблема заключается в том, что AssouciatedMemberGroup, похоже, связан с «Can Edit» в пользовательском интерфейсе. Я хочу, чтобы группа посетителей была группой по умолчанию. – Thomas

+1

Работал для меня. Спасибо @ Вадим! –