示例:创建列表项事件处理程序

上次修改时间: 2010年4月9日

适用范围: SharePoint Foundation 2010

下面的示例演示用于创建事件处理程序的基本步骤。在此示例中,事件处理程序在删除列表项之前或添加列表项之后执行代码。此示例适用于通知列表,向新项的正文中添加文本,以及取消删除现有项的尝试。

通过创建类库在 Microsoft Visual Studio 中创建事件处理程序程序集。添加对 Microsoft.SharePoint.dll 的引用,并从 Microsoft.SharePoint.SPItemEventReceiver 基类继承,如以下示例所示。

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace MyEventHandlers

{
    public class SimpleEventHandler : SPItemEventReceiver
    {
    }
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SharePoint

Namespace MyEventHandlers

    Public Class SimpleEventHandler
        Inherits SPItemEventReceiver
    End Class
End Namespace

当列表中发生操作时,将实例化类的对象。作为开发人员,您应为要处理的事件重写基类的方法。可以重写的 SPItemEventReceiver 基类的方法包括:

该示例重写两个方法:ItemDeletingItemAdded。请记住,后缀"-ing"表示我们将在操作实际发生之前 处理事件,而后缀"-ed"表示我们将在操作发生之后 处理事件。

public override void ItemDeleting(SPItemEventProperties properties)
{
    properties.Cancel = true;
    properties.ErrorMessage = "Deleting is not supported.";
}
Public Overrides Sub ItemDeleting(ByVal properties As SPItemEventProperties)
        properties.Cancel = True
        properties.ErrorMessage = "Deleting is not supported."
End Sub

与列表项有关的数据包含在 ListItem 属性中。您可以通过使用 AfterProperties 属性包来获取这些属性值。

必须重写的第二个方法是 ItemAdded。下面的示例使用 ListItem 属性返回表示新列表项的对象,然后修改该项的正文文本。

public override void ItemAdded(SPItemEventProperties properties)
{
    SPListItem oItem = properties.ListItem;
    oItem["Body"] = "Body text maintained by the system.";
    oItem.Update();
}
Public Overrides Sub ItemAdded(ByVal properties As SPItemEventProperties)
    Dim oItem As SPListItem = properties.ListItem
    oItem("Body") = "Body text maintained by the system."
    oItem.Update()
End Sub

您必须按绑定 SharePoint Foundation 事件处理程序中所述注册 ItemDeleting 和 ItemAdded 事件接收器。

请参阅

任务

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

概念

绑定 SharePoint Foundation 事件处理程序

事件注册

安全验证并进行发布以更新数据

特权提升

使用功能