Frage

Können wir schreiben einen Eventreceiver, das ausgelöst wird, wenn eine Liste aktualisiert wird. Die listtemplateid, die wir für einen Eventreceiver angeben haben, macht unseren Code specefic zu einer Rasse von Listen. Was passiert, wenn wir haben wollen für Veranstaltungen auf allen Listen der Website der Code ausführen?

War es hilfreich?

Lösung

Ich habe exakt die gleiche Anforderung.

Vielleicht ist es möglich, Ereignisempfänger im System ContentType (alle Inhaltstypen erben, dass man mit ID 0x)

anhängen

I `d zu überprüfen, ob das möglich ist, indem ein Feature mit einem FeatureReceiver Erstellen und Hinzufügen es programmatisch im System Content Type. Einige Details hier .

Mein Weg eine Lösung auf der Suche nach

Allright, ich habe einige Tests mit Konsolenanwendung.

  1. Versucht EventReceiver im System (0x) hinzuzufügen. Genannt Methode ContentType.Update (wahr, falsch), die alle untergeordneten Elemente aktualisiert - noch tat-System ContentType aktualisiert, noch Childs . Es stellte sich heraus, dass Sie nicht diese Content mit ReadOnly ändern || Sealed Attribut auf TRUE
  2. Versuchte Eventreceiver Punkt (0x01) ContentType hinzuzufügen. Wie hier zu sehen ist, erben alle ContentTypes noch von diesem einen (siehe Hierarchie Content ). Es benutzerdefinierte werden können Inhaltstypen eingesetzt, die aus dem System erben, aber nicht diejenigen, gemacht in GUI. Aktualisierung dieser Inhalt Alles Kind ContentTypes wirklich aktualisiert (alle Inhaltstypen mit Ausnahme derjenigen, ReadOnly oder Sealed)

Wie eine globale Eventreceiver auf alle Elemente befestigen

So eine Lösung, die wie folgt aussehen würde funktionieren würde:

  1. Iterate alle Listen, setzen Readonly oder Sealed auf false, wenn Sie diese Inhaltstypen wollen mit Ihnen EventReceivers.
  2. Fügen Sie Ihren EventReceiver zu bestehenden Inhaltstypen in Listen (SPList.ContentTypes)
  3. Fügen Eventreceiver zu Content (SPWeb.ContentTypes) mit id 0x01 so neue Listen erhalten Eventreceiver automatisch hinzugefügt. Neu erstellte Inhaltstypen werden auch EventReceivers erben. Auch alle Unterweb ContentTypes vererben EventReceivers.

Alle drei Schritte könnten eine Konsolenanwendung oder Powershell-Skript sein. Oder ein Website-Sammlung breites Feature mit FeatureReceiver

Das Ergebnis

    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

Es ist mein WSS lokalisiert, aber {,,, ...} bedeutet, dass ich mehrere Eventreceivers zu Inhaltstypen hinzugefügt. Wie Sie unangetastet Falsch sehen können. Menschen mit Readonly oder Sealed Attribute

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top