Attachez EventReceiver à toutes les listes d'un site sharepoint
-
12-09-2019 - |
Question
Peut-on écrire un eventreceiver qui est déclenché lorsque toute liste est mise à jour. Le listtemplateid que nous devons préciser un eventreceiver fait notre code specefic à une race de listes. Et si nous voulons avoir le code pour exécuter des événements sur toutes les listes de site?
La solution
J'ai la même exigence exacte.
Peut-être qu'il est possible de joindre récepteur d'événements du système ContentType
(tous les types de contenu hériteront que l'un, avec id 0x)
vérifier si ce `d est possible en créant une fonction avec un FeatureReceiver et en ajoutant à programme type de contenu système. Quelques détails ici .
Mon chemin pour trouver une solution
Allright, je l'ai fait quelques tests avec application de la console.
- essayé d'ajouter
EventReceiver
Système (0x) . Méthode dite ContentType.Update (true, false) qui met à jour tous les éléments de l'enfant - n'a pas non plus mis à jour SystèmeContentType
, ni Childs . Avère que vous ne pouvez pas modifier ces ContentTypes avecReadOnly
||Sealed
attribut défini surTRUE
- essayé d'ajouter à l'article EventReceiver (0x01)
ContentType
. Comme on le voit d'ici, tousContentTypes
encore hériter de celui-là (voir hiérarchie ContentType ). Il peut y avoir des types de contenu personnalisé déployé héritant du système, mais pas celles qui sont faites dans l'interface graphique. Mise à jour de ce type de contenu vraiment mis à jour tous les enfantsContentTypes
(tous les types de contenu, sauf ceuxReadOnly
ouSealed
)
Comment attacher une EventReceiver globale à tous les éléments
Ainsi, une solution qui fonctionnerait ressemblerait à ceci:
- itérer toutes les listes, définissez
Readonly
ouSealed
false si vous voulez que ces types de contenu avec vousEventReceivers
. - Ajoutez votre
EventReceiver
à des types de contenu existants dans les listes (SPList.ContentTypes
) - Ajouter EventReceiver à ContentType (
SPWeb.ContentTypes
) avec id 0x01 si de nouvelles listes se EventReceiver automatiquement ajouté. Nouvellement créés types de contenu seront également hériterEventReceivers
. Aussi tous les sous-site WebContentTypes
HériterEventReceivers
.
Les trois étapes pourraient être une application console ou d'un script PowerShell. Ou une grande fonctionnalité site de collection avec FeatureReceiver
Le résultat
PS C:\Documents and Settings\Administrator> $web.contentTypes |ft id, name, EventReceivers, readonly, sealed
Id Name EventReceivers ReadOnly Sealed
-- ---- -------------- -------- ------
0x Sistēma {} False True
0x007F1DD730DB144C84... Darba kārtības vēsture {} True True
0x01 Ieraksts {, , , ...} False False
0x01003420C661289843... Darba kārtības ieraksts {, , , ...} False False
0x0101 Dokuments {, , , ...} False False
0x010100629D00608F81... Office datu savienoj... {} True False
0x010100B4CBD48E029A... Universālais datu sa... {} True False
0x010101 Veidlapa {, , , ...} False False
0x010102 Attēls {, , , ...} False False
0x010104 Nezināms dokumenta tips {} True False
0x010105 Lapu šablons {, , , ...} False False
0x010107 Lietotāja darbplūsma... {, , , ...} False False
0x010108 Wiki lapa {, , , ...} False False
0x010109 Pamatlapa {, , , ...} False False
0x01010901 Web daļu lapa {, , , ...} False False
0x01010A Saistīt ar dokumentu {, , , ...} False False
0x01010B Dublinas pamata kolo... {, , , ...} False False
0x0102 Notikums {, , , ...} False False
0x0103 Diskutējamais jautājums {, , , ...} False False
0x0104 Paziņojums {, , , ...} False False
0x0105 Saite {, , , ...} False False
0x0106 Kontaktpersona {, , , ...} False False
0x0107 Ziņojums {, , , ...} False False
0x0108 Uzdevums {, , , ...} False False
0x0108007122AD6D76CD... Darba kārtības uzdevums {, , , ...} False False
0x010801 Darbplūsmas uzdevums {, , , ...} False False
0x010802 Administratīvs uzdevums {, , , ...} False False
0x0109 Darbplūsmas vēsture {, , , ...} False False
0x010A Person {, , , ...} False False
0x010B SharePointGroup {, , , ...} False False
0x010C DomainGroup {, , , ...} False False
0x0110 Ziņa {, , , ...} False False
0x0111 Komentārs {, , , ...} False False
0x0116 Tālo Austrumu līgums {, , , ...} False False
0x0120 Mape {} False True
0x012001 RootOfList {} False True
0x012002 Diskusija {, , , ...} False False
Désolé, mon WSS est localisée, mais {,, ...} signifie que j'ajouté plusieurs EventReceivers aux types de contenu. Comme vous pouvez le voir avec ceux Readonly
ou Sealed
attribut False ne sont pas touchées.