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?

Était-ce utile?

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.

  1. 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ème ContentType, ni Childs . Avère que vous ne pouvez pas modifier ces ContentTypes avec ReadOnly || Sealed attribut défini sur TRUE
  2. essayé d'ajouter à l'article EventReceiver (0x01) ContentType. Comme on le voit d'ici, tous ContentTypes 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 enfants ContentTypes (tous les types de contenu, sauf ceux ReadOnly ou Sealed)

Comment attacher une EventReceiver globale à tous les éléments

Ainsi, une solution qui fonctionnerait ressemblerait à ceci:

  1. itérer toutes les listes, définissez Readonly ou Sealed false si vous voulez que ces types de contenu avec vous EventReceivers.
  2. Ajoutez votre EventReceiver à des types de contenu existants dans les listes (SPList.ContentTypes)
  3. 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ériter EventReceivers. Aussi tous les sous-site Web ContentTypes Hériter EventReceivers.

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top