Eventhandler sind ein sehr praktisches Feature in WSS bzw. Sharepoint, um die Möglichkeiten von Listen und Bibliotheken um eigene Funktionen zu erweitern. Jede Sharepoint-Liste bzw. -bibliothek ist in der Lage, verschiedene Events in Abhängigkeit der jeweiligen Situation auszulösen. An diese Events kann man selbst-programmierte Eventhandler koppeln, die aufgerufen werden, sobald die Liste oder die Bibliothek diesen Event auslöst. Dazu erstellt man eine Assembly, die den eigentlichen Eventhandler enthält (z.B. mit VS2005 und der WSS3-Erweiterung), kopiert diese in den GAC und verbindet diese Assembly mit der gewünschten Liste und dem gewünschten Event. Wer weitergehende Informationen über das Programmieren von Eventhandlern sucht, findet diese im SDK unter dem Stichwort: SPItemEventReceiver.
Ein einfaches Beispiel: bei einem Kundenprojekt gab es die Anforderung, sicherzustellen, dass jeder Mitarbeiter nur einen einzigen Eintrag in einer speziellen Liste erstellen durfte. Solange es bereits einen Eintrag von einem Mitarbeiter gibt, sollte es ihm nicht erlaubt sein, einen zweiten Eintrag zur Liste hinzuzufügen. Diese Funktion läßt sich einfach mit einem eigenen Eventhandler lösen. Die Liste löst jedesmal kurz bevor ein Eintrag hinzugefügt werden soll, das Event ItemAdding aus. Ich habe einen einfachen Eventhandler programmiert, der prüft, ob der aktuelle Benutzer bereits einen Eintrag in der Liste erstellt hat. Wird der Eventhandler bei der Prüfung nicht fündig, wird das Hinzufügen erlaubt, ansonsten verboten.
Ein solcher Eventhandler ist schnell programmiert, aber das Registrieren des Eventhandlers ist leider sehr unhandlich bzw. umständlich.
Offensichtlich gab es bei U2U ähnliche Probleme, denn Patrick Tisseghem hat ein Tool geschrieben und veröffentlicht, welches das Registrieren von programmierten Eventhandlern sehr vereinfacht. Ich kann dieses Tool nur jedem empfehlen, der sich mit Eventhandlern beschäftigt.
Hier der Link zu Patrick Tisseghem's Artikel
Hinweis: Brian Wilson hat in seinem Blog weitere interessante Informationen über Eventhandler zusammengetragen:
Hier der Link zu seinem Artikel