Modifier les listes de sites web hôtes SharePoint au moment de la création
Lorsque vous créez une liste dans le site web hôte, vous pouvez utiliser un récepteur d’événements distants ListAdded pour modifier cette liste. Par exemple, vous pouvez activer le contrôle de version, ajouter un type de contenu à la liste ou apporter d’autres modifications implémentées par le modèle objet client (CSOM).
Lorsque la liste est ajoutée au site web hôte, vous devez attacher par programmation le récepteur d’événements. L’exemple Core.EventReceiversBasedModifications vous montre comment utiliser un complément hébergé par un fournisseur pour ce faire. Lorsque le complément est installé, un événement AppInstalled se produit et vous utilisez cet événement pour attacher l’événement ListAdded .
Avant de commencer
Pour commencer, téléchargez l’exemple de complément Core.EventReceiversBasedModifications à partir du projet Office 365 Developer Patterns and Practices sur GitHub.
Remarque
Le code dans cet article est fourni tel quel, sans garantie d’aucune sorte, expresse ou implicite, y compris mais sans s’y limiter, aucune garantie implicite d’adéquation à un usage particulier, à une qualité marchande ou une absence de contrefaçon.
Joindre l’événement ListAdded
Pour implémenter les gestionnaires d’événements pour le complément, affichez les propriétés du projet SharePoint et définissez Gérer le complément installé et Gérer la désinstallation du complément sur True.
L’exemple de code suivant montre comment le récepteur d’événements AppInstalled est modifié pour attacher le récepteur d’événements ListAdded .
bool rerExists = false;
cc.Load(cc.Web.EventReceivers);
cc.ExecuteQuery();
foreach (var rer in cc.Web.EventReceivers)
{
if (rer.ReceiverName == RECEIVER_NAME)
{
rerExists = true;
}
}
if (!rerExists)
{
EventReceiverDefinitionCreationInformation receiver = new EventReceiverDefinitionCreationInformation();
receiver.EventType = EventReceiverType.ListAdded;
// Get WCF URL where this message was handled.
OperationContext op = OperationContext.Current;
Message msg = op.RequestContext.RequestMessage;
receiver.ReceiverUrl = msg.Headers.To.ToString();
receiver.ReceiverName = RECEIVER_NAME;
receiver.Synchronization = EventReceiverSynchronization.Synchronous;
cc.Web.EventReceivers.Add(receiver);
cc.ExecuteQuery();
}
Personnaliser les listes ajoutées
Lorsque le gestionnaire d’événements ListAdded est déclenché, le code suivant s’exécute.
private void HandleListAdded(SPRemoteEventProperties properties)
{
using (ClientContext cc = TokenHelper.CreateRemoteEventReceiverClientContext(properties))
{
if (cc != null)
{
try
{
if (properties.ListEventProperties.TemplateId == (int)ListTemplateType.DocumentLibrary)
{
//set versioning
cc.Web.GetListByTitle(properties.ListEventProperties.ListTitle).UpdateListVersioning(true, true);
}
}
catch (Exception ex)
{
System.Diagnostics.Trace.WriteLine(ex.Message);
}
}
}
}
}
Désinstaller le récepteur d’événements
Lorsque le complément est désinstallé, le récepteur d’événements doit également être supprimé. Pour que cela fonctionne pendant le débogage, accédez à la bibliothèque Compléments dans la bibliothèque de test et utilisez l’option de suppression sur le complément. Cela déclenche l’événement AppUninstalling avec les autorisations appropriées pour supprimer le gestionnaire d’événements distants créé.
Si vous fermez simplement le navigateur ou désinstallez le complément du contenu du site, le récepteur d’événements ne se déclenche jamais ou le récepteur d’événements AppUninstalling s’exécute avec des autorisations insuffisantes pour supprimer le récepteur d’événements ListAdded . Cela est dû au fait que les compléments sont déployés différemment lorsqu’ils sont chargés de manière latérale, ce que fait Visual Studio lorsque vous appuyez sur F5.
Remarque
Nous vous recommandons de tester cet exemple dans un site propre développeur.