我创建了一个事件接收器来处理SharePoint 2010中文档库上的ItemAdded和ItemUpdating事件.
我遇到了一个问题,当我向库中添加文档时(例如,通过将其保存回Word),正确调用了ItemAdded方法,然后调用了两次ItemUpdating.我已从处理程序中删除了所有代码,以确保它不是我正在做的内容导致问题.它们看起来像:
public override void ItemUpdating(SPItemEventProperties properties)
{
}
public override void ItemAdded(SPItemEventProperties properties)
{
}
Run Code Online (Sandbox Code Playgroud)
有没有人有这个问题的解决方案?
这是我的事件接收器的elements.xml文件:
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="101">
<Receiver>
<Name>DocumentsEventReceiverItemUpdating</Name>
<Type>ItemUpdating</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>My.Namespace.DocumentsEventReceiver</Class>
<SequenceNumber>10000</SequenceNumber>
<Synchronization>Synchronous</Synchronization>
</Receiver>
<Receiver>
<Name>DocumentsEventReceiverItemAdded</Name>
<Type>ItemAdded</Type>
<Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
<Class>My.Namespace.DocumentsEventReceiver</Class>
<SequenceNumber>10000</SequenceNumber>
<Synchronization>Synchronous</Synchronization>
</Receiver>
</Receivers>
</Elements>
Run Code Online (Sandbox Code Playgroud)
问题是在Document library事件处理程序中Item Updating也检查它Document是在检入模式还是检出.这就是它被召唤两次的原因.
你应该把你的代码放进去
public override void ItemUpdating(SPItemEventProperties properties)
{
base.ItemUpdating(properties);
if (properties.AfterProperties["vti_sourcecontrolcheckedoutby"] == null && properties.BeforeProperties["vti_sourcecontrolcheckedoutby"] != null)
{
//do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
有关详细信息,这里有一篇描述Document's事件整体情况的好文章.
| 归档时间: |
|
| 查看次数: |
5935 次 |
| 最近记录: |