2009-07-01 99 views
5

我想以编程方式让这个用户只能看到particuar清单上的项目。SharePoint列表项权限

基本上在创建项目时运行的工作流程中,我将执行一些操作并通知一些人关于此项目的信息。我还希望它更改项目上的权限,以便只有特定用户(根据项目内容在运行时查找)才能读取该项目。其他有权访问该列表的用户只会看到特定的项目,但不是全部。列表项不一定拥有,但是需要看到它,所以我不能设置列表权限,让用户只看到自己的物品的用户(一个或多个)。

要把它放到上下文如果helps-名单登记工作角色的特定成员。每个列表项都是一个角色分配,其中包含角色列表中角色的查找以及成员列表中成员的查找。我没有直接使用在成员列表中的multilookup场的角色,因为每个角色分配需要保持它如说明,开始日期ECT额外信息。 每个角色都有一个特定的用户/组来管理它。我想它,以便将角色分配这个大名单时,用户只能看到角色分配的,他们的管理者的角色。

意见,将不胜感激。

回答

10

您可以将权限分配给单个列表项。例如。

 // get list item 
     SPListItem item = <your list item>; 
     if (!item.HasUniqueRoleAssignments) 
     { 
      item.BreakRoleInheritance(true); 
     } 

     // get principal 
     SPPrincipal principal = <principal to grant permissions to>; 

     // get role definition 
     SPRoleDefinition rd = <role that contains the permissions to be granted to the principal>; 

     // create role assignment 
     SPRoleAssignment ra = new SPRoleAssignment(principal); 
     ra.RoleDefinitionBindings.Add(rd); 
     item.RoleAssignments.Add(ra); 

但要小心每个列表项目分配权限的性能和操作含义。

一般情况下,我宁愿

  • 权限分配不超过列表级别
  • 尽可能更深,将权限分配给组,然后包括个人用户到这些组中。
+0

此问题/答案可能有所帮助:http://stackoverflow.com/questions/1058232 – 2009-07-01 15:06:06