授予用户对其他列表中项目的权限

时间:2010-05-04 07:00:11

标签: sharepoint

这就是我正在做的事情。 我有两个清单:

  1. 用户分配到的列用户和列项目。
  2. (图书馆):所有项目的清单。
  3. 我想知道,如何在第一个列表中创建的每一行(如此添加用户和项目),可以在第二个库(项目库)中授予用户对此项目引用的权限。 例: ProjectLibrary:

    • PROJECT1
    • Project2的
    • 项目3

    第一个清单:

    • user1 project1
    • user1 project2
    • user2 project2
    • user2 project3
    • user3 project3

    现在我想让每个用户都有权查看他所分配的项目,这样当他打开第三个表单时,一个装满项目的组合框只会显示他有权限的项目。

    非常感谢你!

2 个答案:

答案 0 :(得分:0)

据我所知,没有标准方法可以在Sharepoint中为某些项设置权限。仅限整个列表。如果要过滤组合框 - 您需要在代码中实现自定义表单(应用程序页面)和过滤器组合。

答案 1 :(得分:0)

在SharePoint 2007中支持项目级权限。

您可以创建一个列表事件处理程序(SPItemEventReceiver)。每次更改/添加用户项时,处理程序都可以更新相应的项目项。

public class EventHanlder: SPItemEventReceiver
{
    public override void ItemAdded(SPItemEventProperties properties)
    {
        // collection user and project information from the item being updated.
        SPListItem item = properties.ListItem;
        SPUser user = new SPFieldUserValue(item.Web, item["UserFieldName"] as string).User;
        int projectId = new SPFieldLookupValue(item["ProjectFieldName"]).Id;

        // create role assignment for the user on the user item.
        SPRoleAssignment ra = new SPRoleAssignment(user);
        SPRoleDefinition rd = item.Web.RoleDefinitions.GetByType(SPRoleType.Reader);
        ra.RoleDefinitionBindings.Add(rd);
        ra.Update();

        // get the project item and update the role assignments.
        SPList projectList = // retrieve project list here...
        SPListItem projectItem = projectList.GetItemById(projectId);        
        projectItem.RoleAssignments.Add(ra);
    }
}

这只是示例代码。我不是100%确定SPField *** Value的东西是否适用。

  

现在我想让每个用户都有权查看他所分配的项目,这样当他打开第三个表单时,一个装满项目的组合框只会显示他有权限的项目。

这应该通过查找字段自动完成,因为只显示用户具有权限的项目。