Sharepoint事件处理程序未触发

时间:2011-06-02 13:30:58

标签: sharepoint content-type event-handling

我已经为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>
    
  4. 5.Created Elements.xml使用GAC中DLL的PublicKeyToken和ListTemplateID来处理文档库(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.   
    3. 在网站上(SP 2007),网站操作 - &gt;网站设置 - &gt;修改所有网站设置 - &gt;网站功能和激活的“已添加事件处理程序”
    4.   

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

      由于

1 个答案:

答案 0 :(得分:2)

我明白了。在为项目提供内容类型之前,需要为文档库启用我的自定义内容类型。感谢大家的回复。