2012-02-24 45 views
2

我正在尋找爲Sharepoint列表定義以下選項的可能性。我知道它可以從接口完成,但是如何從XML或代碼創建呢?我可以設置這個地方在列表定義或列表實例:如何限制SP列表中的編輯僅限於擁有物品?

  • 提供者應該能夠創建項目,但不應該是能夠修改,也不刪除其他用戶的項目(但編輯自己的物品 - 是的)。

  • 審批,網站管理員和網站集administraotrs應該對所有項目

回答

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

Trikks,這是一個解決方案,但你讓我思考。原來,我需要的是WriteSecurity。我添加了功能接收器,並在FeatureActivated我設置SPList.WriteSecurity = 2在此列表上。

我發現這個MSDN文檔,http://msdn.microsoft.com/en-us/library/dd588628(v=office.11).aspx
我想可以在代碼中設置它,但在哪裏?

我在ListDefinition中將此部分添加到了schema.xml中,就像在文檔中一樣,但這不起作用。部署並創建新列表後,我轉到列表設置 - >高級設置,然後選中「創建並編輯訪問權限」。不過,檢查是第一種選擇,而不是第二種。

相關問題