【问题标题】:Sharepoint event handler not firingSharepoint 事件处理程序未触发
【发布时间】:2011-09-07 02:18:58
【问题描述】:

我为 ItemAdded 创建了一个事件处理程序,以便在网站上添加项目时,我的代码会检查它是否为文件夹。如果是,则应将该文件夹的内容类型更改为自定义内容类型。

该事件没有触发,所以我想知道我是否以正确的方式和/或在正确的位置执行它。这是我的代码:

public class ItemAddedHandler : SPItemEventReceiver
{
public override void ItemAdded(SPItemEventProperties properties)
{
    base.ItemAdded(properties);

    SPListItem listItem = properties.ListItem;
    SPList list = properties.ListItem.ParentList;
    SPContentType contentType;

    if (listItem.FileSystemObjectType == SPFileSystemObjectType.Folder &&
       (list.Title == "Apps" || list.Title == "Data" || list.Title == "Public"))
    {
        contentType = list.ContentTypes["Custom Folder"];

        listItem["Content Type"] = contentType.Name;
        listItem["Content Type ID"] = contentType.Id.ToString();
        listItem.SystemUpdate();
    }
}
}

如果我在完成这项任务时做错了什么,请告诉我。提前非常感谢。

根据要求,使用以下方法添加该功能:

  1. 对以上代码进行签名和编译,并将 DLL 复制到服务器
  2. 将 DLL 复制到 GAC
  3. 创建的文件夹:C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\SPEventHandler 4.使用Visual Studio生成的GUID创建Feature.xml:

    <?xml version="1.0" encoding="utf-8" ?>
    <Feature Scope="Web" 
      Title="Added Event Handler" 
      Id="{27C2FDFF-ADA0-4984-955C-6448E182FA88}" 
      xmlns="http://schemas.microsoft.com/sharepoint/">
      <ElementManifests>
        <ElementManifest Location="Elements.xml"/>
      </ElementManifests>
    </Feature>
    

5.使用 GAC 中 DLL 的 PublicKeyToken 和 ListTemplateID 创建 Elements.xml 以使用文档库 (101):

    <?xml version="1.0" encoding="utf-8" ?>
    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <Receivers ListTemplateId="101">
        <Receiver>
          <Name>AddedEventHandler</Name>
          <Type>ItemAdded</Type>
          <SequenceNumber>10000</SequenceNumber>
          <Assembly>SPEventHandler, Version=1.0.0.0, Culture=neutral, 
              PublicKeyToken=f2e7de6c4a924a03</Assembly>
          <Class>SPEventHandler.ItemAddedHandler</Class>
          <Data></Data>
          <Filter></Filter>
        </Receiver>
      </Receivers>
    </Elements>
  1. 在服务器上运行以下命令:

    stsadm -o installfeature -filename SPEventHandler\Feature.xml

  2. 在站点 (SP 2007) 上,站点操作 -> 站点设置 -> 修改所有站点设置 -> 站点功能并激活“添加的事件处理程序”

在这些步骤之后,在此站点的列表中创建一个新项目似乎没有做任何事情,包括写入事件日志,所以我想知道它是否正在运行。

谢谢

【问题讨论】:

  • 我知道这是一个编程问题,但值得一提的是,您可能会在这里得到更好的回应:sharepoint.stackexchange.com
  • 是的,我也在那里尝试过。谢谢。
  • 我感到你的痛苦我做了一段时间的分享点,但没有足够的资源或知道很多的人。你会得到管理员、一些开发人员等的混合体。
  • 请显示您如何注册接收器的代码/配置。
  • 我已编辑问题以包含我的部署过程中的步骤。谢谢

标签: sharepoint content-type event-handling


【解决方案1】:

我想通了。需要为文档库启用我的自定义内容类型,然后才能为项目指定该内容类型。感谢大家的回复。

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多