Résolution des problèmes liés aux événements

Windows SharePoint Services 3

La programmation d'événements peut provoquer des comportements exceptionnels, selon les contextes dans lesquels vous implémentez les gestionnaires d'événements. Le tableau suivant décrit les comportements des événements liés à des contextes spécifiques que vous pouvez rencontrer lors de l'écriture de code.

Contexte Description

Bibliothèques de documents et types de contenu

Vous créez une page .aspx d'un type de contenu particulier dans une bibliothèque de documents, et la page est associée à des événements ItemAdding et ItemAdded, mais les événements ne se déclenchent pas.

Seules des propriétés de type de contenu par défaut sont présentes dans la phase d'ajout. Des propriétés supplémentaires (champs) du type de contenu spécifié sont ajoutées uniquement dans la phase de mise à jour. Par conséquent, la pratique recommandée consiste à éviter de déclencher des événements Add avec un ID de type de contenu spécifié. Au lieu de cela, définissez le type de contenu avec le type de contenu par défaut dans la phase d'ajout. Le type de contenu peut être modifié ultérieurement dans la phase de mise à jour. Une alternative consiste à inscrire les événements au niveau de la liste.

Bibliothèques de documents et types de contenu

Un événement ItemAdding lié à un type de contenu se déclenche même lorsqu'un document qui n'est pas de ce type est téléchargé.

Lorsque vous ajoutez un document à une bibliothèque, le type de contenu est toujours le type de contenu par défaut associé à la liste. Le type de contenu du document peut être modifié lors de la phase de mise à jour et l'ID du type de contenu est ajusté en conséquence.

Bibliothèques de documents et types de contenu

Une demande pour supprimer un élément via un formulaire de liste n'a pas d'ID de type de contenu associé, mais cela provoque le déclenchement d'un événement ItemDeleting ou ItemDeleted sur tous les éléments et pas seulement sur les éléments d'un type de contenu spécifique, même si l'événement a été inscrit uniquement pour le type de contenu.

De par sa conception, Windows SharePoint Services déclenche des événements pour tous les éléments d'une liste lorsque la demande n'est pas liée à un type de contenu, pour permettre le déclenchement d'un événement pour tous les éléments lorsque le récepteur d'événements est inscrit pour tous les éléments de la liste.

Ce comportement affecte les stratégies qui impliquent des événements Delete. Si vous implémentez une stratégie qui implique la suppression, appliquez la stratégie à un type de contenu, puis liez le type de contenu à une liste : la stratégie s'appliquera à tous les éléments de la liste, et pas seulement aux éléments du type de contenu auquel la stratégie est appliquée.

Listes et types de contenu

Vous inscrivez des événements ItemUpdating et ItemUpdated sur un type de contenu qui est lié à une liste, mais les événements se déclenchent même lorsque les éléments qui ne sont pas de ce type de contenu sont mis à jour via le modèle objet.

Windows SharePoint Services retourne 0 (zéro) en tant qu'ID de type de contenu, et pas l'ID de type de contenu de l'élément.

Listes

La propriété BeforeProperties s'applique uniquement aux listes de type DocumentLibrary.

La solution consiste à retourner les propriétés à l'aide du modèle objet et l'ID d'élément de liste donné.

Bibliothèques de documents

Vous ajoutez un type de contenu personnalisé à une bibliothèque de documents. Les événements ItemAdding, ItemAdded et ItemUpdating se déclenchent, mais pas les événements ItemUpdated.

Ce problème se produit uniquement pour la bibliothèque de documents Documents partagés et pas pour les bibliothèques de documents personnalisées. Pour les documents partagés, l'ajout d'un type de contenu crée un dossier Forms/<Content Type> et copie un fichier Template.doc dans ce dossier, ce qui entraîne le déclenchement des événements.

Bibliothèques de documents et types de contenu

Pour les dossiers, vous obtenez le type de contenu et l'ID de type de contenu via la propriété AfterProperties dans les événements ItemAdding et ItemAdded, mais pour les documents, vous obtenez l'ID de type de contenu seulement dans l'événement ItemAdded et rien dans l'événement ItemAdding.

L'analyseur Windows SharePoint Services pour les documents Microsoft Office System ne définit pas le nom du type de contenu dans un dictionnaire de documents. Les métadonnées de document ne définissent pas un nom de type de contenu.

Listes

Les événements de liste ne se déclenchent pas sur la liste UserInfo.

Listes

Un événement ItemAdded se déclenche sur un élément de type dossier, mais l'ID d'élément de liste n'est pas retourné.

Bibliothèques de documents

Les événements ne se déclenchent pas lors de la dissociation d'une copie du document et du document original.

Bibliothèques de documents

Les ID d'élément de liste ont la valeur 0 lorsque les événements se déclenchent sur des documents dans le dossier des formulaires. Si vous inscrivez un événement ItemUpdating dans une bibliothèque de documents puis que vous modifiez EditForm.aspx, l'événement se déclenche, mais l'ID est égal à 0 (zéro) car l'élément n'est pas un élément de liste normal.

Listes

Les récepteurs d'événements ne se lient pas à une liste lorsque la liste est fournie via Onet.xml et que le type de la liste a un Composant fonctionnel associé qui lie un récepteur à la liste. Vous créez un composant fonctionnel qui lie un récepteur à un type de liste, vous créez une liste de ce type via la définition de site, mais le récepteur n'est pas lié à la liste lorsqu'un site est configuré. Une solution consiste à lier le récepteur à un type de contenu, puis à lier le type de contenu à la liste.

Afficher: