Domanda

Possiamo scrivere un eventreceiver che viene licenziato quando un qualsiasi elenco viene aggiornato. Il listtemplateid che dobbiamo specificare un eventreceiver rende il nostro codice specefic ad una razza di liste. Che cosa succede se vogliamo avere il codice di esecuzione per gli eventi su tutti gli elenchi di sito?

È stato utile?

Soluzione

Ho lo stesso requisito esatto.

Forse è possibile allegare ricevitore di eventi a ContentType sistema (tutti i tipi di contenuto che si ereditano, con id 0x)

I `d verificare se è possibile con la creazione di una funzione con un FeatureReceiver e programmaticamente aggiungendolo al sistema di tipo di contenuto. Alcune informazioni qui .

Il mio percorso per trovare una soluzione

Allright, ho fatto alcuni test con la console app.

  1. provato ad aggiungere EventReceiver del sistema (0x) . Metodo ContentType.Update Chiamato (vero, falso) che aggiorna tutti gli elementi figlio - né ha ContentType sistema aggiornato, né bambino . Scopre che non è possibile modificare tali ContentTypes con ReadOnly || Sealed attributo impostato su TRUE
  2. provato ad aggiungere EventReceiver alla voce (0x01) ContentType. Come si vede da qui, tutti ContentTypes ancora ereditare da quella (vedi ContentType gerarchia ). Ci possono essere schierati personalizzato tipi di contenuto che ereditano da sistema, ma non quelli realizzati in GUI. Aggiornamento di questo tipo di contenuto veramente aggiornato tutti ContentTypes bambino (tutti i tipi di contenuto ad eccezione di quelli ReadOnly o Sealed)

Come collegare un EventReceiver globale a tutti gli elementi

Quindi, una soluzione che avrebbe funzionato sarebbe simile a questa:

  1. Scorrere tutte le liste, impostare Readonly o Sealed su false se si desidera che tali tipi di contenuto con te EventReceivers.
  2. Aggiungi il tuo EventReceiver ai tipi di contenuto già esistenti nelle liste (SPList.ContentTypes)
  3. Aggiungi EventReceiver al ContentType (SPWeb.ContentTypes) con id 0x01 in modo da ottenere nuovi elenchi EventReceiver aggiunto automaticamente. tipi di contenuto appena creato verrà anche ereditare EventReceivers. Inoltre tutti i Web secondario ContentTypes ereditare EventReceivers.

Tutti e tre i passaggi potrebbero essere un'applicazione console o uno script PowerShell. O una caratteristica a livello di raccolta siti con FeatureReceiver

Il risultato

    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

Siamo spiacenti, il mio WSS è localizzato, ma {,,, ...} significa ho aggiunto diversi EventReceivers di tipi di contenuto. Come si può vedere quelli con Readonly o Sealed attribuiscono False sono intatte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top