后删除事件处理器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
- {
- ///
- /// 列表项事件
- ///
- public class EventReceiver1 : SPItemEventReceiver
- {
- ///
- /// 已删除项.
- ///
- 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
|