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

坚持SharePoint 2010事件接收器的基本概念,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我编写了一个事件接收器,目的是将包含“+”符号的所有文档更改为“plus”: 我需要在这里做什么才能将它绑定到我的列表?还是整个网站?我试着研究它,但我找不到一个直接的答案,或者至少一个我能理解的答案。我顺便问了一位我认识的SharePoint开发人员,他提到我需要一些代码来添加它,他建议我使用SharePoint manager,但我想不出来。我需要什么以及如何找到它?转到在子网站下包含事件接收器的功能,即使它已激活,然后停用并重新激活该功能应将该事件接收器附加到列表/库中好的,当您在VIS2

我编写了一个事件接收器,目的是将包含“+”符号的所有文档更改为“plus”:


我需要在这里做什么才能将它绑定到我的列表?还是整个网站?我试着研究它,但我找不到一个直接的答案,或者至少一个我能理解的答案。我顺便问了一位我认识的SharePoint开发人员,他提到我需要一些代码来添加它,他建议我使用SharePoint manager,但我想不出来。我需要什么以及如何找到它?

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

好的,当您在VIS2010中创建此项目时,您必须已选择列表类型,我相信您的列表是自定义列表(对于自定义列表,它是ListTemplateId=“100”)。所以它必须已经绑定到所有自定义列表,现在如果您只想为特定列表运行它,那么您必须检查列表的标题

if (properties.ListTitle == "<List Tile>"){
            SPListItem item = properties.ListItem;
            fileName = item["Name"}.ToString();
            if (fileName.Contains("+"))
            {
                fileName.Replace("+", "plus");
            };
        }
if(properties.ListTitle==“”){
SPListItem=properties.ListItem;
fileName=item[“Name”}.ToString();
if(fileName.Contains(“+”))
{
fileName.Replace(“+”,“plus”);
};
}

事件接收器的注册未在事件接收器本身中定义。它是在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>

事件接收人1项目添加
项目添加

或者。

我没有部署它,我只是尝试使用“播放”按钮运行它,还尝试将它附加到我希望它使用的应用程序池进程。你认为编译和部署它会是答案吗?它必须是以下一个或多个:1-ListTemplateId(或者你可以改为使用ListUrl)不正确2-您的事件接收器未与解决方案一起部署(检查包)3-部署后,您必须停用/重新激活包含事件接收者的功能。感谢您的帮助,我正在努力解决这一问题。请帮帮我:我相信我已将其绑定到根站点上的共享文档。有什么地方可以检查吗?第二,如果我想将其绑定到整个SharePoint或该站点收集会更容易吗?因为无论哪种方式,它都会解决我的问题。您可以签入项目/功能属性,如果它是web,它应该显示为站点/web,如果它是站点,它应该显示为站点/web,如果它是站点,它应该显示为站点集合的范围。我不建议将其用于站点集合,因为它将运行于整个站点集合中的所有列表。您可以n将其设置为web,并在任何需要此行为的地方激活该功能。但我不明白一件事,现有项目如何?事件接收器不会修复它们。您需要运行powershell脚本/独立应用程序来修复该问题。很抱歉,回复太晚@nikunj,我不担心现有项目,因为我们一直在更改当他们进来时使用SQL查询,我们只是厌倦了这样做。
  <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>