我已经写了一个事件接收者,目的是更改包含" +"的所有文件。符号到"加":
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace Plus_Sign.EventReciever1
{
public class EventReceiver1 : SPItemEventReciever
{
private string fileName;
///An item is being added
publc override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
SPListItem item = properties.ListItem;
fileName = item["Name"}.ToString();
if (fileName.Contains("+"))
{
fileName.Replace("+", "plus");
};
}
}
}
我需要在这里将它绑定到我的列表中吗?还是整个网站?我尝试过研究它,但我找不到直接的答案,或者至少有一个我能理解的答案。我问过一位我开发的SharePoint开发人员,他提到我需要一些代码来添加它,他建议我使用SharePoint管理器,但我无法理解。我需要什么,如何找到它?
答案 0 :(得分:2)
好的,当您在VIS2010中创建此项目时,您必须选择列表类型,我相信您的列表是自定义列表(对于自定义列表,它是ListTemplateId =" 100")。所以它必须已经绑定到所有自定义列表,现在如果你只想为特定列表运行它,那么你必须检查列表的标题。
if (properties.ListTitle == "<List Tile>"){
SPListItem item = properties.ListItem;
fileName = item["Name"}.ToString();
if (fileName.Contains("+"))
{
fileName.Replace("+", "plus");
};
}
答案 1 :(得分:1)
事件接收器的注册未在事件接收器本身内定义。它在elements.xml文件中完成。以下是样本:
<Receivers ListTemplateId="107">
<Receiver>
<Name>EventReceiver1ItemAdding</Name>
<Type>ItemAdding</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>VisualWebPartProject1.EventReceiver1.EventReceiver1</Class>
<SequenceNumber>10000</SequenceNumber>
</Receiver>
</Receirvers>
密钥位于Receivers元素中。 ListTemplateId允许您指定这些事件接收器将根据指定的列表模板ID注册到列表。
您也可以使用ListUrl属性通过其URL指定特定列表。
请注意SharePoint事件接收器声明性注册(elements.xml)的一个特殊奇怪行为。如果事件接收器所属的功能范围是网站集,则您的事件接收器将在该网站集中的所有(甚至系统)列表上注册。有时它可能有用,但大部分都不是。
您也可以通过功能接收器中的代码注册事件接收器(FeatureActivated事件)。但是您还应该处理FeatureDeactivating事件以取消注册事件接收器。
要检查正确的注册,您可以使用SharePoint Manager或SharePoint event receiver manager等工具。
答案 2 :(得分:-1)
转到包含您的子网站下的事件接收器的功能,即使它已被激活,然后停用并重新激活该功能应将该事件接收器附加到您的列表/库