後刪除事件處理器ItemDeleted在列表項刪除之後調用,列表項被刪除之後,AfterProperties、BeforeProperties、ListItem屬性獲取列表中某個字段的值都是空的。因此一般情況下對於ItemDeleted事件主要是用來監聽列表項刪除之後是否發送電子郵件等操作。
在VS2010中可以直接創建列表項事件處理器,在VS2010的提示嚮導中可以選擇創建列表項的事件源、事件等操作,如圖1所示:
圖1
在圖1中的三項選擇中,第二項事件源是SharePoint 2010系統中自帶的列表模板,如果使用“將列表另存爲模板”功能將某個自定義列表存爲模板,則在圖1的“事件源”下拉列表框中是找不到的。在圖1中我們選擇了“自定義列表”事件源,那麼凡是在此網站中基於“自定義列表”模板創建的列表都會觸發此事件。在中文版的SharePoint 2010環境中,ItemDeleted事件叫做“已刪除項”,所以在圖1中要選擇“已刪除項”事件,點擊完成按鈕,VS2010會自動創建事件類,代碼如下:
- using System;
- using System.Security.Permissions;
- using Microsoft.SharePoint;
- using Microsoft.SharePoint.Security;
- using Microsoft.SharePoint.Utilities;
- using Microsoft.SharePoint.Workflow;
- namespace Example.SharePoint.EventReceiver
- {
- /// <summary>
- /// 列表項事件
- /// </summary>
- public class EventReceiver1 : SPItemEventReceiver
- {
- /// <summary>
- /// 已刪除項.
- /// </summary>
- public override void ItemDeleted(SPItemEventProperties properties)
- {
- base.ItemDeleted(properties);
- }
- }
- }
SharePoint的ItemDeleted方法是重載了SPItemEventReceiver類中的方法來實現後刪除事件的。
對於ItemDeleted事件表示列表項數據已經從列表中徹底刪除之後發生的事件,是取消不掉的,即使使用了properties.Cancel = true;也是取消不掉刪除的列表項的。
如果要想在列表項被刪除之後發送電子郵件,則可以使用SPUtility.SendEmail對象發送,簡單的格式如下:
SPUtility.SendEmail(properties.OpenWeb(), false, false, "收件人地址", "郵件內容", "郵件內容");
如果想對當前登錄人發送郵件,則可以使用properties參數獲取當前登錄人的郵件地址,C#代碼如下:
本文全文:http://www.360sps.com/item/65f54008775548ca91929e08ddb97574.aspx