2011-02-08 3 views
5

Tôi đã cố gắng tìm một ví dụ đơn giản làm thế nào để cung cấp cho một nhóm Sharepoint X nhất định, một mức cho phép Y, cho mục danh sách Z - nhưng không thể tìm thấy mã ví dụ.Cách cấp quyền SPGroup cho SPItem?

Mã ngắn nhất tôi có thể đưa ra cho gán một người dùng cụ thể quyền ("Reader" trong trường hợp này) cho các mục như sau:

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(); 

Tôi biết rằng SPRoleAssignment.Add cũng có thể mất một SPPrincipal mà lần lượt is a group - Tôi chỉ không biết làm thế nào để viết nó.

Vui lòng cung cấp cho tôi một số mã ví dụ về cách thêm nhóm Sharepoint hiện tại (ví dụ: "MyGroup") với cấp phép "Reader" vào mục của tôi.

Trả lời

11

Thực ra nó khá dễ dàng - thay vì SPRoleAssignment("user","name"...) Tôi chỉ có thể thêm SPGroup vào vai trò giao và nó đã hoạt động! Toàn bộ mã sau:

//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

Cảm ơn điều này, tôi đã có cùng một vấn đề, giải pháp tốt! –

+0

Tôi nhận được giá trị null trong roleAssignment khi tôi cung cấp cho spgroup trong constructor. Phải làm gì cho điều đó? Nhóm được tìm thấy nhưng không hoạt động. –