如何将事件处理程序附加到SharePoint中的特定列表?

如何将事件处理程序附加到SharePoint中的特定列表?,sharepoint,sharepoint-2007,Sharepoint,Sharepoint 2007,我已经读过这个问题,但我有一个疑问 当我使用EventReceivers.Add方法连接我的事件接收器时,事件接收器功能是否必须激活,或者是否足以安装它 而且,如果必须安装,我应该在事件功能的elements.xml中使用什么ListTemplateId 提前感谢事件接收器是一个定义。该定义映射到程序集和类实例。在使用列表模板时,以声明方式(指定listtemplateid)为事件接收器关联使用功能。基于非唯一列表类型附着到特定列表时,通常使用对象模型。例如,通过使用TemplateTypeID

我已经读过这个问题,但我有一个疑问

当我使用
EventReceivers.Add
方法连接我的事件接收器时,事件接收器功能是否必须激活,或者是否足以安装它

而且,如果必须安装,我应该在事件功能的elements.xml中使用什么ListTemplateId


提前感谢

事件接收器是一个定义。该定义映射到程序集和类实例。在使用列表模板时,以声明方式(指定listtemplateid)为事件接收器关联使用功能。基于非唯一列表类型附着到特定列表时,通常使用对象模型。例如,通过使用TemplateTypeID='104',将与该模板类型的所有列表相关联

使用对象模型可以识别特定实例,这样就可以简单地创建关联。因此,如果您想将事件接收器部署为功能部件,您将拥有一个加载程序集的功能部件和一个通过对象模型为您创建关联的功能部件接收器代码


希望这是有道理的

您只需要为事件接收器部署解决方案。这使代码可以附加到列表

要将事件接收器附加到特定列表,请在控制台应用程序中使用以下代码:

using (SPSite site = new SPSite(url))
{
    using (SPWeb siteWeb = site.OpenWeb())
    {
         SPList list = siteWeb.Lists["TheList"];

         SPEventReceiverDefinition defItemAdding = list.EventReceivers.Add();

         defItemAdding.Assembly = "MyEventHandlerProject, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=placeTokenHere";
         defItemAdding.Class = "MyEventHandlerProject.ClassName";
         defItemAdding.Name = "ItemAdding Event";
         defItemAdding.Type = SPEventReceiverType.ItemAdding;
         defItemAdding.SequenceNumber = 1000;
         defItemAdding.Synchronization = SPEventReceiverSynchronization.Synchronous;

         defItemAdding.Update();
} }


你完了

您可以创建将事件处理程序附加到Sharepoint列表的控制台应用程序。检查下面的链接以获取示例控制台应用程序的代码