Come limitare la modifica nell'elenco SP solo per i propri articoli?
-
12-11-2019 - |
Domanda
Sto cercando la possibilità di definire le seguenti opzioni per l'elenco SharePoint.So che può essere fatto dall'interfaccia, ma come fare se da XML o codice?Posso impostare questo da qualche parte nella definizione dell'elenco o dell'istanza elenco:
- .
-
I contributori dovrebbero essere in grado di creare elementi, ma non dovrebbero essere in grado di modificare né eliminare elementi di altri utenti (ma modificare gli elementi propri - Sì).
-
Approversità, Amministratori del sito e collezione del sito Amministrazioneootrs dovrebbero avere il controllo completo su tutti gli articoli
Soluzione
È molto probabile alla ricerca della proprietà RoleeSesignments disponibili per la maggior parte degli ambiti.
Supponi che potresti iniziare con qualcosa come questo
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();
}
. Altri suggerimenti
Trikks, questa è una soluzione, ma mi hai fatto pensare.
Risulta, la cosa di cui avevo bisogno è WriteSecurity
.Ho aggiunto il ricevitore della funzione e in FeatureActivated
ho impostato SPList.WriteSecurity = 2
su questo elenco.
Ho trovato questo MSDN Docu, http://msdn.microsoft.com/en-us/library/dd588628(v=Office.11).aspx
Supponiamo che sia possibile impostare questo in codice, ma dove?
Ho aggiunto questa parte a Schema.xml in ListDefinition, come nella documentazione, ma questo non funziona.Dopo la distribuzione e la creazione di una nuova lista, vado su Impostazioni elenco -> Impostazioni avanzate e controllare 'Crea e modifica Access'.Tuttavia, controllato è la prima opzione, non secondo.