2011-04-10

How to disabling event firing in SharePoint 2010

Today, I tested whether event receiver fires or not when I use SPListItem's Update methods.
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.


5 comments:

  1. Thanks dude. your solution save a lot of my time.

    ReplyDelete
  2. Awesome! Was thinking of doing some multiple inheritance through interface, but doing it this way is just neat!

    ReplyDelete
  3. Great work. Where is this house? It looks very nice ;-)

    ReplyDelete
  4. Hi, I have tried using this in my event receiver that updates multiple sharepoint list items and it still triggers the workflows. Can you help?

    ReplyDelete
  5. Thanks, that tip saves my day a lot!!!!

    ReplyDelete