The results are here.
Methods event firing
Update() fired
SystemUpdate() fired
SystemUpdate(false) fired
UpdateOverwriteVersion() fired
All methods fired !!
But I think people sometimes want not to fire a event receiver when a update method is used.
So, I would like to introduce how to disable event firing.
In SharePoint 2010, SPEventReceiverBase.DisableEventFiring Method and SPEventReceiverBase.EnableEventFiring Method are already obsolete. We need to use EventFiringEnabled Property.
A sample code is here.
private void button1_Click(object sender, EventArgs e)
{
const string siteUrl = "http://sp2010";
SPSite site = new SPSite(siteUrl);
SPWeb web = site.RootWeb;
SPList list = web.Lists["Announcements"];
SPListItem item = list.Items[3];
HandleEventFiring handleEventFiring = new HandleEventFiring();
handleEventFiring.DisableHandleEventFiring();
try
{
item.Update();
}
finally
{
handleEventFiring.EnableHandleEventFiring();
}
}
public class HandleEventFiring : SPItemEventReceiver
{
public void DisableHandleEventFiring()
{
//obsolete
//this.DisableEventFiring();
this.EventFiringEnabled = false;
}
public void EnableHandleEventFiring()
{
//obsotete
//this.EnableEventFiring();
this.EventFiringEnabled = true;
}
}
This summer, I plan to go forest hiking.

Thanks dude. your solution save a lot of my time.
ReplyDeleteAwesome! Was thinking of doing some multiple inheritance through interface, but doing it this way is just neat!
ReplyDelete