【发布时间】: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();
}
}
}
如果我在完成这项任务时做错了什么,请告诉我。提前非常感谢。
根据要求,使用以下方法添加该功能:
- 对以上代码进行签名和编译,并将 DLL 复制到服务器
- 将 DLL 复制到 GAC
-
创建的文件夹: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>
- 在服务器上运行以下命令:
stsadm -o installfeature -filename SPEventHandler\Feature.xml
- 在站点 (SP 2007) 上,站点操作 -> 站点设置 -> 修改所有站点设置 -> 站点功能并激活“添加的事件处理程序”
在这些步骤之后,在此站点的列表中创建一个新项目似乎没有做任何事情,包括写入事件日志,所以我想知道它是否正在运行。
谢谢
【问题讨论】:
-
我知道这是一个编程问题,但值得一提的是,您可能会在这里得到更好的回应:sharepoint.stackexchange.com
-
是的,我也在那里尝试过。谢谢。
-
我感到你的痛苦我做了一段时间的分享点,但没有足够的资源或知道很多的人。你会得到管理员、一些开发人员等的混合体。
-
请显示您如何注册接收器的代码/配置。
-
我已编辑问题以包含我的部署过程中的步骤。谢谢
标签: sharepoint content-type event-handling