功能事件接收器是在 SharePoint 中发生下列功能相关事件之一时执行的方法:
安装功能。
激活功能。
停用功能。
移除功能。
本演练演示如何将事件接收器添加到 SharePoint 项目的功能中。本演练将演示以下任务:
创建包含功能事件接收器的空项目。
处理 FeatureDeactivating 方法。
使用 SharePoint 项目对象模型将公告添加到“公告”列表中。
说明 |
|---|
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。 |
系统必备
您需要以下组件来完成本演练:
支持的 Microsoft Windows 和 SharePoint 版本。有关更多信息,请参见开发 SharePoint 解决方案的要求。
Visual Studio。
创建功能事件接收器项目
首先,将创建一个项目来包含功能事件接收器。
创建包含功能事件接收器的项目
在菜单栏上,依次选择 *** 文件 ***,新建,项目 显示 *** 新项目 *** 对话框。
外接 *** SharePoint *** 节点。*** visual C# *** 或 ***** Visual Basic *****下,然后选择 *** 2010年 *** 节点。
在 *** 模板 *** 窗格中,选择 *** SharePoint 2010项目 *** 模板。
因为它们没有项目模板,所需功能事件接收器使用此项目类型。
在 名称 框中,键入FeatureEvtTest,然后选择 *** 好 *** 按钮显示 *** SharePoint自定义向导 ***。
在**“指定用于调试的网站和安全级别”**页上,输入要将新自定义字段项添加到的 SharePoint Server 网站的 URL,或者使用默认位置 (http://<system name>/)。
在 *** 什么是此SharePoint解决方案的信任级别? *** 部分中,选择 *** 部署为场解决方案 *** 选项按钮。
有关沙盒化解决方案与场解决方案的更多信息,请参见沙盒解决方案注意事项。
选择 *** 完成 *** 按钮将通知名为Feature1的函数显示在 *** 功能 *** 节点下。
向功能中添加事件接收器
接下来,将向功能中添加事件接收器,并添加在停用功能时执行的代码。
向功能中添加事件接收器
打开功能节点的快捷菜单,然后选择 *** 添加功能 *** 创建功能。
在 *** 功能 *** 节点下,打开 ***** Feature1 *****的快捷菜单,然后选择 *** 添加事件接收器 *** 将事件接收器添加到该功能。
这将在 Feature1 下添加一个代码文件。在这种情况下,将该文件命名为 Feature1.EventReceiver.cs 或 Feature1.EventReceiver.vb,具体取决于项目的开发语言。
如果您的项目中 Visual C#中,将下面的代码添加到事件接收器的顶部,如果它已不存在:
using System;事件接收器选件类包含作为事件的多个注释掉的方法。用以下代码替换 FeatureDeactivating 方法:
Public Overrides Sub FeatureDeactivating(ByVal properties As SPFeatureReceiverProperties) Try ' Get reference to SharePoint site. Dim site As SPSite = New SPSite("https://localhost") Dim web As SPWeb = site.OpenWeb("/") ' Get reference to Announcements list. Dim announcementsList As SPList = web.Lists("Announcements") ' Add new announcement to Announcements list. Dim oListItem As SPListItem = announcementsList.Items.Add oListItem("Title") = ("Deactivated Feature: " + properties.Definition.DisplayName) oListItem("Body") = (properties.Definition.DisplayName + (" was deactivated on: " + DateTime.Now.ToString)) oListItem.Update() Catch e As Exception Console.WriteLine(("Error: " + e.ToString)) End Try End Subpublic override void FeatureDeactivating(SPFeatureReceiverProperties properties) { try { // Get reference to SharePoint site. SPSite site = new SPSite("https://localhost"); SPWeb web = site.OpenWeb("/"); // Get reference to Announcements list. SPList announcementsList = web.Lists["Announcements"]; // Add new announcement to Announcements list. SPListItem oListItem = announcementsList.Items.Add(); oListItem["Title"] = "Deactivated Feature: " + properties.Definition.DisplayName; oListItem["Body"] = properties.Definition.DisplayName + " was deactivated on: " + DateTime.Now.ToString(); oListItem.Update(); } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); } }
测试功能事件接收器
接下来,将停用功能,以测试 FeatureDeactivating 方法是否向 SharePoint 公告列表中输出公告。
测试功能事件接收器
设置项目的 *** 活动部署配置 *** 属性的值设置为 *** 无激活 ***。
设置此属性可防止在 SharePoint 中激活功能,并且您可以调试功能事件接收器。有关更多信息,请参见调试 SharePoint 解决方案。
选择 *** F5 *** 键运行项目并将其部署到SharePoint。
在SharePoint网页顶部,打开 *** 站点事件 *** 菜单,然后选择 *** 网站设置 ***。
在 *** 网站设置 *** 页的 *** 站点事件 *** 部分下,选择 *** 管理网站功能 *** 链接。
在 *** 功能 *** 页,请在 *** FeatureEvtTest Feature1 *** 功能旁边的下 *** 激活 *** 按钮。
在 *** 功能 *** 页,请在 *** FeatureEvtTest Feature1 *** 功能旁边的下 *** 停用 *** 按钮,然后选择 *** 停用该功能 *** 确认链接停用功能。
选择 主页 按钮。
请注意,停用功能之后,一个公告将出现在**“公告”**列表中。
说明