2011-02-08 83 views
5

我試圖找到一個簡單的例子,說明如何爲列表項Z提供某個Sharepoint組X的權限級別Y--但無法找到示例代碼。如何爲SPItem授予SPGroup權限?

我能想出的(在這種情況下,「讀者」)爲項目分配特定用戶權限最短的代碼如下:

SPRoleDefinition spRole = spWeb.RoleDefinitions["Reader"];  
SPRoleAssignment roleAssignment= new SPRoleAssignment("//myDomain/myUser", 
                 "[email protected]", 
                 "Name", "Notes");  
roleAssignment.RoleDefinitionBindings.Add(spRole); 

SPListItem listItem = spWeb.GetListItem("http://<URL to item somewhere on the Site>"); 
listItem.BreakRoleInheritance(true); 
listItem.RoleAssegnments.Add(roleAssignment); 
listItem.Update(); 

我知道SPRoleAssignment.Add還可以參加SPPrincipal然後is a group - 我只是不知道如何寫它。

請給我一些示例代碼,介紹如何將具有「Reader」權限級別的現有Sharepoint組(例如「MyGroup」)添加到我的項目中。

回答

11

其實它很容易 - 而不是SPRoleAssignment("user","name"...)我可以添加一個SPGroup角色分配,它的工作!全碼如下:

//note: using SiteGroups is "safer", 
//because also groups which don't yet have any permissions are included 
SPGroup spGroup = spWeb.SiteGroups["MyGroup"]; 
SPRoleDefinition spRole = spWeb.RoleDefinitions["Read"]; 

SPRoleAssignment roleAssignment= new SPRoleAssignment(spGroup); 
roleAssignment.RoleDefinitionBindings.Add(spRole); 

SPListItem listItem = spWeb.GetListItem("http://<URL to item somewhere on the Site>"); 
listItem.BreakRoleInheritance(true); 
listItem.RoleAssegnments.Add(roleAssignment); 
listItem.Update(); 
+1

謝謝你,我有完全相同的問題,很好的解決方案! – 2011-05-10 17:57:36