示例:创建列表项事件处理程序
上次修改时间: 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 基类的方法包括:
该示例重写两个方法:ItemDeleting 和 ItemAdded。请记住,后缀"-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 事件接收器。