Sharepoint Document Library Events - ein kleines Howto
Die Document-Library Events im Sharepoint 2003 (SPS 2003 und WSS 2.0) - ein kleines HOWTO
Vorgehensweise
Es muß eine Assembly (kein WebPart) entwickelt werden, welches das Microsoft.SharePoint.IListEventSink
Interface implementiert
using System;
using System.Text;
using System.Security.Principal;
using System.Runtime.InteropServices;
using System.Diagnostics;
using Microsoft.SharePoint;
using System.IO;
namespace elsni.sharepoint {
public class SPEventHook : Microsoft.SharePoint.IListEventSink {
/// <summary>
/// Konstruktor
/// </summary>
public SPEventHook() {
}
public void OnEvent(Microsoft.SharePoint.SPListEvent listEvent) {
}
}
}
Siehe auch Handling Document Library Events
Das Assembly muß in den GAC (Global Assembly Cache)
- per drag and drop einfach in
C:/WINDOWS/assembly
reinziehen
- oder eleganter mit "
gacutil.exe /i <assemblydatei> /f
"
- Die Assembly muß dazu strong named sein (siehe auch WebPartEntwicklung)
Der virtuelle Server muß angewiesen werden überhaupt Events zu erzeugen, wenn man Dokumente eincheckt.
- Sharepoint Zentraladministration aufrufen
- Klick auf "Einstellungen virtueller Server konfigurieren"
- Den gewünschten Virtuellen Server wählen
- Klick auf "Allgemeine Einstellungen für virtuelle Server "
- Ganz unten: Ereignishandler sind: auf Aktiviert setzen.
Die Events einer Dokumentenbibliothek müssen mit der Assembly verbunden werden
- In der Dokumentbibliothksansicht auf "Einstellungen und Spalten ändern" gehen
- auf "Erweiterte Einstellungen ändern" klicken
- Unter Ereignishandler / Assemblierungsname die kompletten Infos des Assemblys (mit Culture und dem ganzen Rotz) reinkopieren.
Beispiel: elsni.sharepoint.SPEventHook, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4eb918a4aec57c
- Unter Klassenname den vollen Klassennamen hineinschreiben.
Beispiel: elsni.sharepoint.SPEventHook
Dokument Einchecken und gucken ob geht
Hinweis:
Die Events werden erst dann gefeuert, wenn die Dokumentaktion bereits beendet wurde. Ein zu löschendes Dokument ist also beispielsweise schon gelöscht, bevor der eigene Event-Code zum Einsatz kommt. Es ist daher z.B. leider nicht möglich über diesen Weg einen "Papierkorb" etc. zu programmieren oder das Löschen zu verbieten.
...tbc...