Wie kann ich einen Ereignisempfänger nur für eine Liste mit einer spezifischen Template-ID hinzufügen?

7

Ich füge den ItemAdding Event-Empfänger für eine benutzerdefinierte Listenvorlage hinzu. Sowohl der Ereignisempfänger als auch die Listenvorlage werden von derselben Funktion bereitgestellt. Die gleiche Funktion erstellt auch Listeninstanzen.

Das Problem, das ich habe, ist, dass das Ereignis für jedes Listenelement ausgelöst wird in der Site, auf der es bereitgestellt wurde. Elements.xml für eventreceivre ist:

%Vor%

Ich bin mir nicht sicher, was ich falsch mache. Ich habe mehr oder weniger alles aus hier gemacht .

Env: Sharepoint 2010 mit Veröffentlichungsfunktion auf dieser Site

    
Lukasz Salamon 25.10.2010, 11:17
quelle

4 Antworten

13

Ich hatte das gleiche Problem mit meinem Event Receiver. Ich habe ListTemplateId, ListTemplateOwner und sogar ListUrl ausprobiert. Ich wusste, dass die Einstellungen gültig waren, aber sie wurden ignoriert und der Empfänger wurde an jede Liste angehängt.

Ich hatte eine Ahnung, dass es möglicherweise damit zusammenhängt, dass der Ereignisempfänger innerhalb einer Site-Bereichsfunktion deklariert wird. Dies scheint durch die "Dokumentation" für SPEventElement bestätigt zu werden:

%Vor%

Scheint so, als ob ListTemplateId, ListTemplateOwner und ListUrl für Site-Bereichsfunktionen ignoriert werden. Wenn ich mein Event Receiver-Element in eine webbasierte Funktion verschoben habe, wurde der Empfänger nur an die gewünschte Liste angeschlossen.

    
Rich Bennema 20.09.2011, 17:15
quelle
3

Bei der Festlegung auf Website wurde für alle Listen ausgelöst. Als ich die Lösung für web definierte, funktionierte es. Hoffe es hilft.

    
Pradeep 14.09.2011 13:35
quelle
2

Aus dem MSDN SDK - Ссылка

  

Ein Empfänger-Tag kann eine siteweite Bedeutung haben   Ereignisregistrierung oder eine Veranstaltung   Registrierung für das Root-Web. Das   Das Scope-Attribut wird zur Definition von at verwendet   welche Ebene sind die Ereignisempfänger?   angewendet. Wenn das Empfänger-Tag keine hat   ListTemplateId- oder ListUrl-Attribut,   der Ereignisempfänger ist registriert bei   der gleiche Umfang wie das Feature. Zum   Beispiel, ein Feature, auf das ein Bereich festgelegt ist   Das Web führt zu einem Ereignisempfänger   zu einem Ereignisempfänger hinzugefügt werden   Sammlung, die auf das Web beschränkt ist.

Dies führt zu der Annahme, dass die von Ihnen angegebene Liste VorlageID möglicherweise ungültig ist.

    
brian brinley 25.10.2010 16:53
quelle
1

Wenn Sie den Ereignisempfänger nur für eine bestimmte Liste benötigen, müssen Sie dieses Attribut festlegen und es wird ISA funktionieren Stellen Sie jedoch sicher, dass Ihre Funktion im Web-Bereich und nicht im Site-Bereich ausgeführt wird, als ob der Site-Bereich für alle Listen im System ausgelöst wird.

    
Ahmed Hefny 06.12.2012 14:47
quelle