竹子开花的时 发表于 2019-2-5 07:06:16

SharePoint2010后删除事件处理器ItemDeleted的使用

  后删除事件处理器ItemDeleted在列表项删除之后调用,列表项被删除之后,AfterProperties、BeforeProperties、ListItem属性获取列表中某个字段的值都是空的。因此一般情况下对于ItemDeleted事件主要是用来监听列表项删除之后是否发送电子邮件等操作。
在VS2010中可以直接创建列表项事件处理器,在VS2010的提示向导中可以选择创建列表项的事件源、事件等操作,如图1所示:
http://www.360sps.com/Illustration/objectmodel/181.png
图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


页: [1]
查看完整版本: SharePoint2010后删除事件处理器ItemDeleted的使用