SharePoint 2013 事件接收器(EventReceiver)

环境:Windows Server 2012,SharePoint 2013,Visual Studio 2013

事件接收器:在某一事件发生或者发生后触发的操作,比如新建网站后、添加列表项时、添加列表项后等。
事件接收器类型:列表事件、列表项事件、列表电子邮件事件、web事件、列表工作流事件。

创建事件接收器

1、添加事件接收器
这里写图片描述

2、事件接收器设置。选择事件接收器类型,如果是列表事件或者列表项事假,可以选择对应的列表,以及对应的事件
这里写图片描述

3、如果列表是在页面上添加的,可以修改事件接收器的Elements文件,把节点Receivers 的 ListTemplateId=”105101” 改为 ListUrl=”Lists/Test”

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListUrl="Lists/Test">
      <Receiver>
        <Name>TestERItemAdded</Name>
        <Type>ItemAdded</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>Class Path</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
      <Receiver>
        <Name>TestERItemUpdated</Name>
        <Type>ItemUpdated</Type>
        <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
        <Class>Class Path</Class>
        <SequenceNumber>10000</SequenceNumber>
      </Receiver>
  </Receivers>
</Elements>

4、添加事件,SPItemEventProperties 对象里面包含了很多对象,Site、Web、ListItem等。有一点需要注意的是在事件接收器里面好像是找不到SPContext.Current的,已经把Site、Web封装到SPItemEventProperties 里面了

        /// <summary>
        /// 已添加项.
        /// </summary>
        public override void ItemAdded(SPItemEventProperties properties)
        {
            base.ItemAdded(properties);

            //当前站点
            SPWeb web = properties.Web;
            //可以直接获取新增项的数据,创建时间
            DateTime craeteTime = DateTime.Parse(properties.ListItem["Created"] + "");

            //properties 包含了很多东西,有需要的可以看一下

        }

5、说一下关于事件接收器作用范围,这个新手要注意一下,如果事件接收器的类型是列表事件、列表项事件的时候需要部署到相应的Web下面,否则找不到列表。

猜你喜欢

转载自blog.csdn.net/u012835032/article/details/79277683