Friday, November 20, 2009

Guida SharePoint – Deploy Event Receiver

Precedenti post:

Gli event receiver possono essere deployiate in 3 da:
  • Programma
  • Feature
  • Content type

Programma

Se si vuole associare il proprio event receiver ad una sola instanza di una lista invece che a tutte le liste, possiamo registrare il nostro event receiver programmaticamente:

SPWeb webSite = new SPSite("http://win2k3r2lab").OpenWeb();
SPList theList = webSite.Lists["Tasks"];
SPEventReceiverDefinition newReceiver = theList.EventReceivers.Add();
newReceiver.Class = "Receiver.ReceiverClass";
newReceiver.Assembly = "Receiver,Version=1.0.0.0,Culture=neutral,PublicKeyToken=abc123abc123abc";
newReceiver.Sequence = 5000;
newReceiver.Type = SPEventReceiverType.ItemUpdated;newReceiver.Update();


da notare dalla 6 alla 8 per associare l’event receiver alla lista.


Feature


Deployiando tramite Feature, abbiamo la possibilità di associare gli event receivers al tipo di lista sulle quali vogliamo lavorare, specificando l’ID del template della lista.
Ecco un esempio:
Feature.xml


<feature event="" id="{EF0917F4-5ED8-40b1-9A37-585BCDE9DB63}" item="" scope="Web" title="List" xmlns="http://schemas.microsoft.com/sharepoint/">
<elementmanifests>
<elementmanifest location="Elements.xml"></elementmanifest>
</elementmanifests>
</feature>

Elements.xml

<elements xmlns="http://schemas.microsoft.com/sharepoint/">
<receivers listtemplateid="107">
<receiver>
<name>EventLogger</name>
<type>ItemAdded</type>
<sequencenumber>10000</sequencenumber>
<assembly>EventLogger, Version=1.0.0.0, Culture=neutral,PublicKeyToken=5d1d751131e0aacf</assembly>
<class>EventLogger.ListEventLogger</class>
<data></data>
<filter></filter>
</receiver>
<receiver>
<name>EventLogger</name>
<type>ItemUpdated</type>
<sequencenumber>10000</sequencenumber>
<assembly>EventLogger, Version=1.0.0.0, Culture=neutral,PublicKeyToken=5d1d751131e0aacf</assembly>
<class>EventLogger.ListEventLogger</class>
<data></data>
<filter></filter>
</receiver>
<receiver>
<name>EventLogger</name>
<type>ItemDeleted</type>
<sequencenumber>10000</sequencenumber>
<assembly>EventLogger, Version=1.0.0.0, Culture=neutral,PublicKeyToken=5d1d751131e0aacf</assembly>
<class>EventLogger.ListEventLogger</class>
<data></data>
<filter></filter>
</receiver>
</receivers>
</elements>

Per una lista completa degli ID dei list template fate riferimento alle msdn.


Content Type

Deployiare il tutto tramite i content type segue la stessa logica del deploiare una feature.
Bisognerà quindi creare una dll con strongly name, firmare l’assembly e salvarlo in GAC del server di destinazione.

No comments:

Post a Comment