我有一个包含在SPWeb中的列表,当配置Web时,事件接收者使用以下代码更改列表权限:
[...]
SPList theList = web.Lists[listName];
theList.BreakRoleInheritance(false);
SPGroup group = web.Groups["MyGroup"];
SPRoleAssignment ra = new SPRoleAssignment(group);
SPRoleDefinition roleDef = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
ra.RoleDefinitionBindings.Add(roleDef);
list.RoleAssignments.Add(ra);
list.Update();
稍后在工作流程中,我需要将该组的权限更改为Reader而不是Contributor。我使用了以下代码
SPList theList = web.Lists[listName];
foreach (SPRoleAssignment assignment in theList.RoleAssignments) {
if (assignment.Member.Name == "MyGroup") {
assignment.RoleDefinitionBindings.RemoveAll();
SPRoleDefinition rda = web.RoleDefinitions.GetByType(SPRoleType.Reader);
assignment.RoleDefinitionBindings.Add(rda);
}
}
但是此代码无效,并且不会更改列表上的权限。
有人可以帮助理解哪种方法可以更改现有委托人的权限吗?
由于
答案 0 :(得分:1)
你需要在你的foreach声明之后做theList.Update()
。