本例將展示如何添加一個簡單的事件處理器來阻止從某列表中刪除列表項。這個任務包括兩個步驟:
在Visual Studio中創建事件處理程序
將事件處理程序作為Feature添加到WSS中
在Vistual Studio中創建一個事件處理程序
在Visual Studio中通過點擊文件->新建->項目來新建一個項目
在新建項目對話框中,選擇項目類型為 Visual C# ,模板選擇類庫 , 名稱框中輸入 DeletingEventHandler ,然後點擊確定。
在解決方案管理器中,選擇 DeletingEventHandler, 在項目菜單中點擊添加引用。
在添加引用對話框中,選擇Microsoft.SharePoint (位於 .NET 標簽中)並點擊確定。
在代碼編輯器中,引用Microsoft.SharePoint 命名空間,如下所示:
using Microsoft.SharePoint;
改變類名為DeletingAction 並使其繼承自SPItemEventReceiver類,如下所示:
public class DeletingAction : SPItemEventReceiver
用下列代碼覆寫該類的ItemDeleting方法。
public override void ItemDeleting(SPItemEventPropertIEs properties)
{
properties.Cancel = true;
properties.ErrorMessage = "Deleting items from " + properties.RelativeWebUrl + " is not supported.";
}
在解決方案管理器中,右擊 DeletingEventHandler 結點,點屬性。
在屬性對話框中,點擊簽名標簽,選擇簽名該組件,點擊選擇一個強命名密鑰文件,然後點擊 <新建…>.
在創建強命名密鑰對話框中,輸入 DeletingEventHandler.snk 作為密鑰文件名,您也可以給密鑰指定一個密碼,點擊確定。
通過快捷鍵CTRL+SHIFT+B編譯該項目。
在 Visual Studio項目文件夾下找到 \DeletingEventHandler\bin\Debug 文件夾,將 DeletingEventHandler.dll 文件拖放到 Local_Drive:\Windows\assembly 來進行DLL的全局部署。
將事件處理器作為Feature來添加
在 Local_Drive:/Program Files/Common Files/Microsoft Shared/web server extensions/12/TEMPLATE/FEATURES 下創建一個文件夾,名為 DeletingEventHandler。
在該文件夾下新建一個Feature.xml 文件來標識該Feature,內容如下。該Featuer的范圍是網站。
<Feature Scope="Web"
Title="Deleting Event Handler"
Id="GUID"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml"/>
</ElementManifests>
</Feature>
替換上一步中的GUID 占位符。可以通過guidgen.exe 生成一個新的GUID。該命令行工具位於Local_Drive:\Program Files\Microsoft Visual Studio 8。
在DeletingEventHandler文件夾中創建一個元素文件Elements.xml file 來標識事件處理程序的組件,類,以及方法。本例將事件處理程序應用到網站中的所有通知列表上。
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="104">
<Receiver>
<Name>DeletingEventHandler</Name>
<Type>ItemDeleting</Type>
<SequenceNumber>10000</SequenceNumber>
<Assembly>
DeletingEventHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a26b5449ac4a4cf3</Assembly>
<Class>DeletingEventHandler.DeletingAction</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements>
您可以通過如下方法獲取組件的 Public Key Token 。在Windows資源管理器中找到Local_Drive:\WINDOWS\assembly下的DeletingEventHandler.dll 文件,右擊該文件,點屬性,在屬性對話框的一般標簽中,選擇並拷貝token。
在命令行中,輸入下列命令來安裝和激活Feature,然後重啟IIS( Microsoft Internet Information Services)使變更生效。
stsadm -o installfeature -filename DeletingEventHandler\feature.xml
stsadm -o activatefeature -filename DeletingEventHandler \feature.xml -url http://Server/Site/Subsite
iisreset