1
我已經包含在的SPWeb一個列表,並在網上被提供的事件接收器通過使用此代碼更改列表的權限:SharePoint 2010中更改列表的權限
[...]
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);
}
}
但是,此代碼不起作用,並且不會更改列表中的權限。
任何人都可以幫助理解哪一個是更改現有委託人權限的正確方法嗎?
感謝
你在做foreach之後做一個theList.Update()嗎? – AdamBT 2014-10-17 17:36:49
大聲笑。這麼多時間試圖理解爲什麼......非常感謝你的建議。如果你把它寫成答案,我可以標記它是正確的。 – Lorenzo 2014-10-21 12:14:05