Events 如何在SharePoint上的ItemAdded()事件上检测项目还原

Events 如何在SharePoint上的ItemAdded()事件上检测项目还原,events,sharepoint,recycle-bin,Events,Sharepoint,Recycle Bin,我知道从回收站还原项目时,会触发ItemAdded事件。 但是,如何检测添加的项目是来自回收站还是新文件。您可以检查项目的创建日期。回收站中的项目应具有以前的创建日期。回收站中的项目具有属性中可用的DeletedDate。BeforeProperties如果要手动检测,请检查文档的属性:创建的数据不同。对于文档,即使它被扔进回收站,创建的数据也是相同的。 若你们想通过一种工作流程来完成,那个么你们可以将属性设置为基准。更多细节请自己找 检查SPItemEventProperties.ListIt

我知道从回收站还原项目时,会触发ItemAdded事件。
但是,如何检测添加的项目是来自回收站还是新文件。

您可以检查项目的创建日期。回收站中的项目应具有以前的创建日期。

回收站中的项目具有属性中可用的DeletedDate。BeforeProperties

如果要手动检测,请检查文档的属性:创建的数据不同。对于文档,即使它被扔进回收站,创建的数据也是相同的。
若你们想通过一种工作流程来完成,那个么你们可以将属性设置为基准。更多细节请自己找

检查SPItemEventProperties.ListItemId属性的值:

  • 如果为0,则为新项
  • 如果它不是0,则它是一个项 这是从回收站还原的

这是一个非常古老的主题,但它出现在主题搜索的顶部结果中

从我对SP2010的实验来看,当项目来自回收站时,它看起来是空的,而它完全填充在实际的新项目上

因此,这样一个简单的块就可以做到:

if (!properties.AfterProperties.Cast<DictionaryEntry>().Any())
{
    // From Recycle Bin!
}
else
{
    // This item is really new.
}
if(!properties.AfterProperties.Cast().Any())
{
//从回收站!
}
其他的
{
//这个东西真的很新。
}

我还没有测试MOSS或SP2013。

ItemAdded事件发生在创建列表项之后,并且在这两种情况下都将具有ListItemId。您的答案仅适用于ItemAdding事件。这是一个实用的解决方案(如果将它们转换为毫秒,则几乎不会出错),但依赖日期时间比较似乎很困难(您需要涉及CultureInfo和字符串到日期的转换)。请看下面我的答案,因为它对我有效。我想补充一点,这是在ItemAdded事件中。我的解决方案是:public override void itemsadded(SPItemEventProperties属性){if(!properties.AfterProperties.GetEnumerator().MoveNext()){//From recycle bin}}