这就是我正在做的事情。 我有两个清单:
我想知道,如何在第一个列表中创建的每一行(如此添加用户和项目),可以在第二个库(项目库)中授予用户对此项目引用的权限。 例: ProjectLibrary:
第一个清单:
现在我想让每个用户都有权查看他所分配的项目,这样当他打开第三个表单时,一个装满项目的组合框只会显示他有权限的项目。
非常感谢你!
答案 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的东西是否适用。
现在我想让每个用户都有权查看他所分配的项目,这样当他打开第三个表单时,一个装满项目的组合框只会显示他有权限的项目。
这应该通过查找字段自动完成,因为只显示用户具有权限的项目。