向 SharePoint 2010 列表添加事件接收器

SharePoint 快速入门横幅
SharePoint 2010 中的 Web 开发入门:了解如何将事件接收器附加到自定义 SharePoint 2010 列表。

上次修改时间: 2011年1月12日

适用范围: Office 2010 | SharePoint Foundation 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio 2010

在本练习中,您将事件接收器添加到自定义 Microsoft SharePoint 2010 列表,当您尝试删除该列表中的项目时,会触发该列表。若要完成此任务,您必须执行以下操作:

  • 打开列表定义项目

  • 添加事件接收器代码

  • 测试解决方案

备注

本练习假定您已在 Microsoft Visual Studio 2010 中创建标题为 Bugs 的自定义列表项目。创建自定义列表定义项目的说明包含在快速说明在 SharePoint 2010 中创建自定义列表定义中。

打开列表定义项目

在该任务中,您将在 Visual Studio 2010 中打开列表定义项目。

打开列表定义项目

  1. 启动 Visual Studio 2010

  2. 在"文件"菜单上,指向"打开",然后单击"项目/解决方案"。

  3. 导航到列表定义项目文件("Bugs.sln"),然后单击"打开"。

添加事件接收器代码

在该任务中,您将创建事件接收器,并将其附加到列表定义。此事件接收器可用于防止删除 Bug 项以及显示消息。

将事件接收器添加到列表定义

  1. 在解决方案资源管理器中,右键单击"Bug"节点,指向"添加",然后单击"新建项"。

  2. 在"新建项目"对话框窗口中的"已安装的模板"部分,依次单击"Visual C#"、"SharePoint"和"2010"。

  3. 从项目项中单击"事件接收器"。

  4. 在"名称"框中,键入 BugListItemEvent,然后单击"添加"。

  5. 在 SharePoint 自定义向导中,选择"正在删除项"选项,然后单击"完成"。

  6. 在解决方案资源管理器中,展开"BugListItemEvent",然后打开"Elements.xml"文件。

  7. 若要确保事件接收器仅与自定义列表绑定,请确保"接收器"元素中的 ListTemplateId 属性设置为 10001。

  8. 在解决方案资源管理器中,展开"BugListItemEvent",然后打开"BugListItemEvent.cs"。您将看到重写的 ItemDeleting 方法。

  9. 将以下代码插入 base.ItemDeleting(properties); 语句后 ItemDeleting 方法的正文中。此代码可用于防止删除项目以及显示错误消息。

    try
    { 
       properties.Cancel = true;
       properties.ErrorMessage = "Bugs can only be resolved not deleted!";
    }
    catch (Exception ex)
    {
       return;
    }
    finally
    {
       this.EventFiringEnabled = true;
    }
    
  10. 在解决方案资源管理器中,右键单击"Bug"节点,然后单击"部署"。如果收到部署错误消息,请单击"自动解决"。

  11. 打开之前指定的网站。

  12. 在主页上的左导航窗格中,单击"Bug"列表。

  13. 在"列表工具"选项卡上,单击"项",然后在"新建项"下拉列表中,单击"Bug 项"。将显示"Bug - 新建项"屏幕。

  14. 若要创建 Bug,请在适用框中键入信息,然后单击"保存"。

  15. 接下来,尝试删除该项。您将收到一条与图 1 所示消息类似的消息。

    图 1. 尝试删除项时触发的错误消息

    尝试删除时出现错误消息

测试解决方案

在该任务中,您将先在自定义列表中创建项,然后通过尝试删除项来触发事件接收器。

测试解决方案

  1. 打开在列表定义项目中指定的网站。

  2. 在主页上的左导航窗格中,单击"Bug"列表。

  3. 在"列表工具"选项卡上,单击"项",然后在"新建项"下拉列表中,单击"Bug 项"。将显示"Bug - 新建项"屏幕。

  4. 若要创建 Bug,请在适用框中键入信息,然后单击"保存"。

  5. 接下来,尝试删除该项。您将收到一条与图 1 所示消息类似的消息。

后续步骤