SharePoint 2010更改列表权限

时间:2014-10-17 17:00:47

标签: sharepoint sharepoint-2010

我有一个包含在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);
    }
}

但是此代码无效,并且不会更改列表上的权限。

有人可以帮助理解哪种方法可以更改现有委托人的权限吗?

由于

1 个答案:

答案 0 :(得分:1)

你需要在你的foreach声明之后做theList.Update()