2011-02-08 35 views
2

我有下面的代碼與權限級別將組添加到SharePoint列表如何從Sharepoint 2010中的列表權限以編程方式添加和刪除組?

SPGroup Contribute = web.SiteGroups["Staff"]; 
SPRoleDefinition ContributeDefinition = web.RoleDefinitions["Read"]; 
SPRoleAssignment ContributeRoleAssignment = new SPRoleAssignment(Contribute); 
ContributeRoleAssignment.RoleDefinitionBindings.Add(ContributeDefinition); 
list.RoleAssignments.Add(ContributeRoleAssignment); 

這增加了該組,但我會怎麼做,如果我想撤銷權限列表中該組?

在此先感謝

回答

6

如果您需要刪除整個角色assgnment你可以這樣做:

SPUser user = ...; 
list.RoleAssignments.Remove(user); 

如果需要撤銷一些定義綁定,你可以這樣做:

SPUser user = ...; 
list.RoleAssignments.GetAssignmentByPrincipal(user).RoleDefinitionBindings.Remove(..); 

如果那不是你想要的,請詳細描述一下。

更新: 這是我測試過的示例代碼,它的工作原理。它將刪除Contribute角色並將「讀取」角色添加到目標組。請注意,我擁有非英文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(); 
    } 
    } 
} 
+0

假設員工組對名單有Contribute權限,我希望他們有Read。隨着我發佈的代碼,我可以給他們閱讀,但首先我還需要撤銷Contribute。 – Nick

+0

我已經更新了工作示例的問題。 – EvgK

相關問題