2

我正在寻找为 Sharepoint 列表定义以下选项的可能性。我知道它可以从界面完成,但是如何从 XML 或代码制作呢?我可以在列表定义或列表实例中的某处设置它:

  • 贡献者应该能够创建项目,但不能修改或删除其他用户的项目(但编辑自己的项目 - 是的)。

  • 审批者、网站管理员和网站集管理员应完全控制所有项目

4

2 回答 2

2

Trikks,这是一种解决方案,但你让我思考。
事实证明,我需要的是WriteSecurity. 我添加了功能接收器,并在此列表中FeatureActivated设置。SPList.WriteSecurity = 2

我找到了这个 MSDN 文档, http: //msdn.microsoft.com/en-us/library/dd588628
(v=office.11​​).aspx我想可以在代码中设置它,但是在哪里?

我将此部分添加到 ListDefinition 中的 schema.xml 中,如文档中所示,但这不起作用。部署并创建新列表后,我转到列表设置 -> 高级设置并选中“创建和编辑访问权限”。尽管如此,检查是第一个选项,而不是第二个。

于 2012-02-27T09:18:27.160 回答
1

您很可能正在寻找适用于大多数范围的 RoleAssignments 属性。

假设你可以从这样的事情开始

private void DoStuff() 
{
    SPList list = web.Lists["MyList"];

    // Create custom role
    SPRoleDefinitionCollection roles = web.RoleDefinitions;
    SPRoleDefinition roleDefinition = roles["Contribute"];
    roleDefinition.BasePermissions = SPBasePermissions.AddListItems |
        SPBasePermissions.BrowseDirectories |
        SPBasePermissions.EditListItems |
        SPBasePermissions.DeleteListItems |
        SPBasePermissions.AddDelPrivateWebParts;
    roleDefinition.Update();

    //Creates a new role assignment for a group
    SPGroup myGroup = web.SiteGroups["Team Site Members"];
    SPRoleAssignmentCollection roleAssignments = web.RoleAssignments;

    // SPRoleAssignment accepts a SPPrincipal which can be a SPUser or SPGroup
    SPRoleAssignment roleAssignment = new SPRoleAssignment(myGroup);

    //add a new role definition to the bound role definitions for the role assignment
    SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;
    roleDefBindings.Add(roles["Contribute"]);

    //Add the new role assignment to the collection of role assignments for the site.
    roleAssignments.Add(roleAssignment);

    // Stop inheriting permissions
    list.BreakRoleInheritance(true);
    list.RoleAssignments.Add(roleAssignment);
    list.Update();
}
于 2012-02-25T08:35:26.177 回答