我试图删除所有具有特殊RoleDefinition的组。
SPGroupCollection s = item.RoleAssignments.Groups;
SPGroup group = properties.Web.SiteGroups[grp];
SPRoleDefinition definition = item.Web.RoleDefinitions[(int)SPRoleType.Reader];
foreach (SPGroup removeGroup in s)
{
bool removethisGroup = false;
SPRoleAssignment removerole = new SPRoleAssignment(removeGroup);
if (removerole.Member is SPGroup)
{
foreach (SPRoleDefinition rdb in removerole.RoleDefinitionBindings)
{
if (rdb == "Read")
{
removethisGroup = true;
}
}
}
if (removethisGroup)
{
item.RoleAssignments.RemoveById(removeGroup.ID);
}
}经过大量的尝试和搜索,我有点被困住了。我需要删除roleDefinition“读”的所有组
发布于 2016-11-21 14:55:29
我找到了答案。这个解决方案对我来说是最有效的。
SPGroup group = properties.Web.SiteGroups[grp];
SPRoleDefinition definition = item.Web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignmentCollection roles = item.RoleAssignments;
for (int i = 0; i < roles.Count; i++)
{
bool removeThisRole = false;
SPRoleDefinitionBindingCollection rbc = roles[i].RoleDefinitionBindings;
foreach (SPRoleDefinition rdef in rbc)
{
if (rdef.Type == SPRoleType.Reader)
removeThisRole = true;
}
if (removeThisRole)
{
if (!item.HasUniqueRoleAssignments) // required to make role change
item.BreakRoleInheritance(true);
item.RoleAssignments.Remove(i);
item.Update();
removeThisRole = false;
}
}https://stackoverflow.com/questions/40720419
复制相似问题