坚持使用SharePoint 2010事件接收器的基本概念

时间:2014-07-22 22:14:24

标签: sharepoint sharepoint-2010

我已经写了一个事件接收者,目的是更改包含" +"的所有文件。符号到"加":

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管理器,但我无法理解。我需要什么,如何找到它?

3 个答案:

答案 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 ManagerSharePoint event receiver manager等工具。

答案 2 :(得分:-1)

转到包含您的子网站下的事件接收器的功能,即使它已被激活,然后停用并重新激活该功能应将该事件接收器附加到您的列表/库