我有一个实现的项目接收器 ItemUpdated() 在项目上传到文档库后对其进行处理。如果我将文档添加到默认的“共享文档”库,一切都会正常 - 添加新文档时, ItemUpdated() 可以正常触发。但是,如果我创建一个 新文档库 在同一网站集中, ItemUpdated() 当我向其上传新文档时不会触发。但是当我上传另一个版本,或者重命名文档等时, ItemUpdated() 正常触发 - 只是在项目上传时未触发。典型例子:

  • 我将“doc1”上传到文档库 - ItemUpdated() 不执行(但是如果文档库为“共享文档”,则确实执行);
  • 我上传了“doc1”的另一个版本 - ItemUpdated() 按预期执行;
  • 我重命名“doc1”- ItemUpdated() 按预期执行。

我被引导相信添加文档时的事件顺序通常是:

添加 - 添加 - 更新 - 更新

那么为什么是我的 ItemUpdated() 除了“共享文档”之外的库没有被触发?是否有某些设置可能导致此问题?

注意,由于种种原因,我无法进行里面的处理 ItemAdded().

元素.xml:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers ListTemplateId="101">
    <Receiver>
      <Name>MyEventReceiverItemUpdated</Name>
      <Type>ItemUpdated</Type>
      <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
      <Class>MyProject.MyEventReceiver.MyEventReceiver</Class>
      <SequenceNumber>1000</SequenceNumber>
    </Receiver>
  </Receivers>
</Elements>

代码:

public class MyEventReceiver : SPItemEventReceiver
{
    // On document upload, this method is only entered if I upload to "Shared Documents"
    public override void ItemUpdated(SPItemEventProperties properties)
    {               
        base.ItemUpdated(properties); // doesn't get called either
        MyMethod(properties);
    }
}
有帮助吗?

解决方案 2

看来我找到了解决办法。我实施了 ItemAdded() 除了原来的 ItemUpdated() 在事件接收器中。在里面,我强制随后调用 ItemUpdated() 像这样:

public override void ItemAdded(SPItemEventProperties properties)
{            
    base.ItemAdded(properties);
    properties.ListItem.UpdateOverwriteVersion();            
}

注意 UpdateOverwriteVersion “更新项目而不创建该项目的另一个版本”(MSDN)。这会导致调用 ItemUpdated() 添加新项目时;此外,它不会创建该项目的新版本(即当您第一次添加新项目时,您不会最终得到 2 个版本)。到目前为止,这对于所有文档库(无论有没有版本控制)都按预期工作。

其他提示

您在一个图书馆或另一个图书馆中是否有额外的专栏?似乎这对于上传时是否触发 ItemUpdating() 有所不同。看一下 这个帖子. 。其中关键的一句话是,

“在文档库中添加文档期间触发的事件可能包括itemuppating和itemupted。但是,只有该过程中还包括其他字段。”

因此,您可能希望在您的环境中尝试不同的库配置,以便更好地了解 SharePoint 的这一“功能”如何影响您的系统。

另外,我可以理解可能有理由避免使用 ItemAdded。如果 ItemUpdated 仍然是您的一个问题,并且您愿意分享一些有关为什么 ItemAdded 在您的环境中不受欢迎的详细信息,请考虑在此处提出一个有关如何使 ItemAdded 在您的系统中工作的单独问题。

祝你好运!

许可以下: CC-BY-SA归因
scroll top