如何在sharepoint 2010中以编程方式从列表权限中添加和删除组?

如何在sharepoint 2010中以编程方式从列表权限中添加和删除组?,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我使用以下代码将具有权限级别的组添加到sharepoint列表 SPGroup Contribute = web.SiteGroups["Staff"]; SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"]; SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute); ContributeRoleAssignment.

我使用以下代码将具有权限级别的组添加到sharepoint列表

SPGroup Contribute = web.SiteGroups["Staff"];
SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"];
SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute);
ContributeRoleAssignment.RoleDefinitionBindings.Add(ContributeDefinition);
list.RoleAssignments.Add(ContributeRoleAssignment);
这会添加组,但如果要撤消对此组的列表的权限,该如何操作


提前感谢

如果您需要删除整个角色关联,您可以执行以下操作:

SPUser user = ...;
list.RoleAssignments.Remove(user);
SPUser user = ...;
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);
如果需要撤销某些定义绑定,可以执行以下操作:

SPUser user = ...;
list.RoleAssignments.Remove(user);
SPUser user = ...;
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..);
如果这不是您想要的,请详细描述

更新: 下面是我已经测试过的示例代码,它可以正常工作。它将删除贡献角色并将读取角色添加到目标组。请注意,我有非英语的Sharepoint版本,因此请确保角色的名称

static void Main(string[] args)
{
  using (SPSite site = new SPSite("site_url"))
  {
    using (SPWeb web = site.OpenWeb())
    {
      SPList list = web.GetList(web.Url + "/" + "list_url");
      SPGroup group = web.SiteGroups["target_group_name"];
      SPRoleDefinition contributeDef = web.RoleDefinitions["Contribute"];
      SPRoleDefinition readDef = web.RoleDefinitions["Read"];
      SPRoleAssignment contributeRole = new SPRoleAssignment(group);
      contributeRole.RoleDefinitionBindings.Add(contributeDef);
      if (!list.HasUniqueRoleAssignments) // required to make role change
        list.BreakRoleInheritance(true);
      var assignmentForGroup = list.RoleAssignments.GetAssignmentByPrincipal(group);
      assignmentForGroup.RoleDefinitionBindings.Remove(contributeDef);
      assignmentForGroup.RoleDefinitionBindings.Add(readDef);
      assignmentForGroup.Update();
    }
  }
}

假设员工组在列表上有“贡献”权限,我希望他们改为阅读。有了我发布的代码,我可以让他们阅读,但首先我还需要撤销贡献。