在SharePoint中,SPListItem的Item更新、删除等都会引发引关的Item****事件。
虽然我们可以编写相关的事件处理程序来对这些事件进行捕获并处理。
但是,如果有这样一个需求:我们在程序中需要更新某个字段,但不希望该字段引发相关的事件时,该怎么办呢?
方法有二:
1、在程序中(非事件处理程序)中,更新完项内容后调用item.SystemUpdate()方法,而不是item.Update()方法,
在MSDN里有这样一段描述:
When you implement the SystemUpdate method, events are triggered and the modifications are reported in the Change and Audit logs,
but alerts are not sent
and properties are not demoted into documents.
在我目前参与的项目中,就碰到了这个需求:某条新闻(项)查看时,在程序中会为它的点击数(字段)自动加1,但,不希望该加1会引发“通知我”中修改类型的邮件通知事件。
2、在事件处理程序中,设置
SPEventReceiverBase.DisableEventFiring为true,以禁止引发事件。
需要注意的,更新完成后,要设置回false.