后删除事件处理器ItemDeleted在列表项删除之后调用,列表项被删除之后,AfterProperties、BeforeProperties、ListItem属性获取列表中某个字段的值都是空的。因此一般情况下对于ItemDeleted事件主要是用来监听列表项删除之后是否发送电子邮件等操作。

在VS2010中可以直接创建列表项事件处理器,在VS2010的提示向导中可以选择创建列表项的事件源、事件等操作,如图1所示:

SharePoint2010已删除项事件处理器

图1

在图1中的三项选择中,第二项事件源是SharePoint 2010系统中自带的列表模板,如果使用“将列表另存为模板”功能将某个自定义列表存为模板,则在图1的“事件源”下拉列表框中是找不到的。在图1中我们选择了“自定义列表”事件源,那么凡是在此网站中基于“自定义列表”模板创建的列表都会触发此事件。在中文版的SharePoint 2010环境中,ItemDeleted事件叫做“已删除项”,所以在图1中要选择“已删除项”事件,点击完成按钮,VS2010会自动创建事件类,代码如下:

 

  1. using System;  
  2. using System.Security.Permissions;  
  3. using Microsoft.SharePoint;  
  4. using Microsoft.SharePoint.Security;  
  5. using Microsoft.SharePoint.Utilities;  
  6. using Microsoft.SharePoint.Workflow;  
  7.  
  8. namespace Example.SharePoint.EventReceiver  
  9. {  
  10.     /// <summary>  
  11.     /// 列表项事件  
  12.     /// </summary>  
  13.     public class EventReceiver1 : SPItemEventReceiver  
  14.     {  
  15.        /// <summary>  
  16.        /// 已删除项.  
  17.        /// </summary>  
  18.        public override void ItemDeleted(SPItemEventProperties properties)  
  19.        {  
  20.            base.ItemDeleted(properties);  
  21.        }  
  22.     }  
  23. }  

SharePoint的ItemDeleted方法是重载了SPItemEventReceiver类中的方法来实现后删除事件的。

对于ItemDeleted事件表示列表项数据已经从列表中彻底删除之后发生的事件,是取消不掉的,即使使用了properties.Cancel = true;也是取消不掉删除的列表项的。

如果要想在列表项被删除之后发送电子邮件,则可以使用SPUtility.SendEmail对象发送,简单的格式如下:

SPUtility.SendEmail(properties.OpenWeb(), false, false, "收件人地址", "邮件内容", "邮件内容");

如果想对当前登录人发送邮件,则可以使用properties参数获取当前登录人的邮件地址,C#代码如下:

本文全文:http://www.360sps.com/item/65f54008775548ca91929e08ddb97574.aspx