我的SharePoint 2007项目中有以下方案。 我有计时器作业定义,每30分钟从SQL数据库表更新SharePoint列表。
我还为列表添加了项目事件处理程序,因此它不允许用户从SharePoint用户界面向列表中添加新项目。 换句话说,新的列表项只能通过SharePoint对象模型添加到计时器作业定义中,并且不允许从UI添加新项目。
我的问题是 - 事件处理程序正在执行,即使它从计时器作业定义添加新项目,我可以以某种方式检查事件处理程序如何添加项目(通过对象模型或通过用户界面)。
非常感谢, Hrayr
答案 0 :(得分:2)
为您提供多种选择。
从计时器作业中插入标记
或Disable the event receiver for the thread, do your insert, re-enable event receiver.
答案 1 :(得分:1)
首先,为什么不设置不允许添加新项目的权限,而不是在尝试将项目添加到列表后通过eventreceiver向用户提供错误?
关于问题 - 可以临时禁用事件触发。例如,当您的计时器作业运行时,禁用事件触发,直到您完成。但是它可能不适合所有情况,因为它会禁用列表的所有事件接收器。但是,如果您没有任何事件接收器可以在ItemAdding / ItemAdded事件上添加数据,那么它就可以工作。
暂停禁用事件触发的代码可以在这里:Disable Sharepoint item events firing during item update(它适用于任何事件,而不仅仅是更新)
答案 2 :(得分:0)
您可以查看正在执行项目添加操作的用户帐户。
如果System.Threading.Thread.CurrentPrincipal.Identity
是运行计时器作业的帐户,请设置SPEventPropertiesBase.Cancel = false;