环境: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下面,否则找不到列表。