创建事件处理程序
上次修改时间: 2010年4月8日
适用范围: SharePoint Foundation 2010
若要在 Visual Studio 中创建 SharePoint Foundation 事件处理程序,可创建一个"类库"类型的新项目,然后从其中的一个事件接收器基类继承。当您从所继承的基类中选择事件接收器基类时,需确保您的事件接收器基类适用于您想要捕获的事件,并且适用于您想要绑定到的事件宿主。
在以下代码示例中,我们创建一个名为 ItemAdded 的事件接收器定义,该定义使用并重写 SPItemEventReceiver 基类上的方法。我们之所以使用此基类,是因为我们想要捕获在向列表中添加项后所引发的事件。如果我们改为想要捕获网站级别的事件,则我们将从 SPWebEventReceiver 类继承。
重要信息 |
---|
若要查阅列出 SharePoint Foundation 事件的表、适用于每个事件的事件接收器以及可绑定到每个接收器的事件宿主,请参阅 SharePoint 事件、事件接收器和事件宿主表。 |
创建事件接收器定义
在创建项目之后,请确保除了添加项目默认的 using 语句之外,还添加一个 using Microsoft.SharePoint 语句。在项目中,我们创建 ERDefinition 命名空间,并声明一个从 SPItemEventReceiver 继承的 ItemEvents 公共类。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ERDefinition
{
public class ItemEvents : SPItemEventReceiver
...
示例事件接收器应检测何时向列表或文档库中添加项,以便重写基类的 ItemAdded(SPItemEventProperties) 方法:
public override void ItemAdded(SPItemEventProperties properties)
此方法采用一个提供有关项属性的信息的 SPItemEventProperties 实例作为参数。
显而易见,示例中的事件处理程序几乎没有执行任何操作。我们仅仅向列表项"Title"字段中追加了一个日期时间戳,然后调用 Update()。
{
SPListItem item = properties.ListItem;
item["Title"] = item["Title"] + " - " + DateTime.Now;
item.Update();
}
现在我们已经创建了事件接收器定义,接下来必须将事件处理程序绑定到事件宿主。请参阅绑定 SharePoint Foundation 事件处理程序以了解此过程接下来的操作步骤。
代码清单
以下是针对上面的插图的完整代码清单。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ERDefinition
{
public class ItemEvents : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
SPListItem item = properties.ListItem;
item["Title"] = item["Title"] + " - " + DateTime.Now;
item.Update();
}
}
}