创建事件处理程序

上次修改时间: 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();
        }
    }
}

请参阅

任务

如何:创建事件处理程序功能

概念

SharePoint Foundation 事件简介

SharePoint 事件、事件接收器和事件宿主表

绑定 SharePoint Foundation 事件处理程序