Pregunta

Podemos escribir un EventReceiver que se activa cuando cualquier lista se actualiza. El listtemplateid que tenemos que especificar para un EventReceiver hace que nuestra specefic código para una raza de listas. ¿Qué pasa si queremos tener el código de ejecución de eventos en todas las listas de sitio?

¿Fue útil?

Solución

Tengo el mismo requisito exacto.

Tal vez es posible adjuntar receptor de eventos a ContentType sistema (todos los tipos de contenido que se heredan, con id 0x)

`d comprobar si eso es posible mediante la creación de una función con un FeatureReceiver y programación de añadirlo al sistema de tipo de contenido. Algunos detalles aquí .

Mi camino en la búsqueda de una solución

De acuerdo, me hizo algunas pruebas con aplicación de consola.

  1. intentado añadir EventReceiver al sistema (0x) . Llamado ContentType.Update método (verdadero, falso) que actualiza todos los elementos secundarios - ni tampoco ContentType sistema actualizado, ni del niño . Resulta que no es posible modificar esas ContentTypes con ReadOnly || Sealed atributo establecido en TRUE
  2. intentado añadir a EventReceiver Artículo (0x01) ContentType. Como se ve desde aquí, todo ContentTypes todavía hereda de que uno (ver ContentType jerarquía ). Puede ser desplegado tipos de contenido que heredan de sistema, pero no las realizadas en GUI. La actualización de este contenido de este tipo verdaderamente actualizada toda ContentTypes niño (todos los tipos de contenido, excepto los ReadOnly o Sealed)

Cómo conectar un EventReceiver global para todos los artículos

Así que una solución que funcionaría sería el siguiente:

  1. Iterar todas las listas, establecer Readonly o Sealed en false si quieres esos tipos de contenido con el que EventReceivers.
  2. Añada su EventReceiver a tipos de contenido existentes en las listas (SPList.ContentTypes)
  3. Añadir a EventReceiver ContentType (SPWeb.ContentTypes) con id 0x01 así obtener nuevas listas EventReceiver añade automáticamente. tipos de contenido de nueva creación también heredarán EventReceivers. También todo ContentTypes subweb hereda EventReceivers.

Los tres pasos podrían ser una aplicación de consola o un script de PowerShell. O una característica amplia colección de sitios con FeatureReceiver

El resultado

    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

Lo siento, mi WSS se localiza, pero {,,, ...} significa añadí varios EventReceivers a tipos de contenido. Como se puede ver con los Readonly o Falso Sealed atribuyen son intactos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top