volver vistas para online crear clasica aplicaciones .net sharepoint moss event-receiver

.net - para - vistas en sharepoint 2013



Adjuntar EventReceiver a todas las listas de un sitio sharepoint (1)

¿Podemos escribir un receptor de eventos que se dispara cuando se actualiza cualquier lista? El listtemplateid que tenemos que especificar para un receptor de eventos hace que nuestro código sea específico para una variedad de listas. ¿Qué sucede si queremos que el código se ejecute para eventos en todas las listas de sitios?


Tengo el mismo requisito exacto.

Quizás es posible adjuntar un receptor de eventos a System ContentType (todos los tipos de contenido lo heredan, con id 0x)

Comprobaría si eso es posible creando una característica con un FeatureReceiver y añadiéndola programáticamente al tipo de contenido del sistema. Algunos detalles aquí .

Mi camino para encontrar una solución

Muy bien, hice algunas pruebas con la aplicación de la consola.

  1. EventReceiver agregar EventReceiver a System (0x) . Se llamó método ContentType.Update (verdadero, falso) que actualiza todos los elementos secundarios, ni System ContentType actualizado, ni childs . Resulta que no puedes modificar esos contentTypes con ReadOnly || Atributo Sealed establecido en TRUE
  2. Intenté agregar EventReceiver al Item (0x01) ContentType . Como se ve desde aquí, todos los ContentTypes heredan de ese (ver jerarquía ContentType ). Puede haber tipos de contenido implementados personalizados que hereden del Sistema, pero no los que se realizan en la GUI. Al actualizar este tipo de contenido, se actualizaron realmente todos los tipos de contenido secundarios (todos los tipos de contenido, excepto los que solo son ReadOnly o Sealed )

Cómo adjuntar un EventReceiver global a todos los elementos

Entonces, una solución que funcionaría se vería así:

  1. Itere todas las listas, establezca Readonly o Sealed en false si desea esos tipos de contenido con usted EventReceivers .
  2. Agregue su EventReceiver a tipos de contenido existentes en las listas ( SPList.ContentTypes )
  3. Agregue EventReceiver a ContentType ( SPWeb.ContentTypes ) con id 0x01 para que las nuevas listas obtengan EventReceiver automáticamente. Los tipos de contenido recién creados también heredarán EventReceivers . Además, todos los ContentTypes subweb heredan EventReceivers .

Los tres pasos podrían ser una aplicación de consola o script de powershell. O una función amplia de colección de FeatureReceiver 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 está localizado, pero {,,, ...} significa que agregué varios receptores de eventos a los tipos de contenido. Como puede ver, aquellos con el Readonly o Sealed falso no se tocan.