Step By Step Guide to List Events Handling in SharePoint

 

In SharePoint 2007 it is possible to handle events that occur on list items. These types of events come in two flavours: synchronous and asynchronous.

Synchronous: happens ‘before’ the actual event, you have the HttpContext and you can show an error message in the browser and cancel the event

Asynchronous: happens ‘after’ the actual event, there’s no HttpContext and you cannot directly show an error message or cancel the eventBy subclassing Microsoft.SharePoint.SPItemEventReceiver you can override the desired “event” methods.

Synchronous: methods ending with ‘-ing’ (ItemAdding, ItemUpdating, …)

Asynchronous: methods ending with ‘-ed’ (ItemAdded, ItemUpdated, …)

Objective:The objective of this article is to give a very basic explanation of how to catch an event on a SharePoint list and deploy them programmatically. I will achieve in this article “User will get error message; whenever any item will get deleted from a particular list “.

What is Event?

Event handling gives developer the ability to catch certain user actions in code and react programmatically.

Steps to handle List in SharePoint

  1. Create a class that will extend SPListEventReceiver or SPItemEventReceiver class. These are classes ofMicrosoft.SharePoint.dll assembly.
  2. Sign the class library with strong name.
  3. Deploy the class library to GAC
  4. Deploy the event receiver assembly.

Creating the class

  1. Create a new project of type class library. name it as eventhandlersampleclasslibrary.extend the class with SPItemEventReceiver. The purpose of extending this class is that we are going to handle events on a particular item of a list.

Note: I am going to handle the Item Deleting event on a particular list. I will not allow any user to delete any item in that list.Event Handler Class

using System;

 using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

namespace eventhandlersampleclasslibrary

{   

  public class Class1 :SPItemEventReceiver  

  {   

    public override void ItemDeleting(SPItemEventProperties properties)    

  {     

  //base.ItemDeleting(properties); 

    string errorMessage = “Please Do not delete “;

  properties.ErrorMessage = errorMessage; 

  properties.Cancel = true;    

 }  

  }

}

Signing the class name

  1. Right click on Project and then Properties.
  2. Now click on signing tab.
  3. Check the Sign the Assembly checkbox.
  4. For selecting the Strong name key file , select New option from drop down
  5. Give a strong name. I am giving the name abc here.
  6. Make sure Password protection checkbox is unchecked.
  7. After this; you would be able to see abc.snk in solution explorer.

Deploying the class library to GAC

  1. Open the command prompt
  2. Change directory to Program Files\Common Files\ Microsoft Shared\ web server extension\12\Bin

Type the command gacutil /I complete path of the dll of class created as eventreceiver class in step1Gacutil /I [Complte path of dll of class]The above command will deploy the dll in Gac assembly.Deploy the Event Receiver assemblyThis step could be done I either in three ways

  1. Through code
  2. Through Stsadm command ( Features)
  3. Through the content types

I am going to deploy using the program.

  1. Either create another project of console type or add class to any existing project.
  2. Add the reference of SharePoint dll.
  3. Return the Site Collection using SPSite.
  4. Return the top level site using SPWeb.
  5. Return the list using SPList.
  6. Add the event in the list using SPEventRecieverDefinition.
  7. Dhan is the name of the list which event I am going to capture.

Class name is the name of the class, you created in step1.Assembly is the assembly information of the dll in GAC. To get information about dll in GAC follow below steps.a. Go to Start -> Runb. Type Assemblyc. Window will open; seek for dll you added.

d. Right click there and go to properties for all the information.

e. In Type select ItemDeleting.f. Then call the update method.

Console Application –Deploy event handler

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using Microsoft.SharePoint;

namespace ConsoleApplication1

{ 

class Program

{  

 static void Main(string[] args)  

 {     

 SPSite spsite = new SPSite(“http://adfsaccount:2222/”);      SPWeb mysite = spsite.OpenWeb();

 SPList theList = mysite.Lists[“Dhan”];    SPEventReceiverDefinition newReceiver = theList.EventReceivers.Add();   

 newReceiver.Class = “eventhandlersampleclasslibrary.Class1”;    newReceiver.Assembly = “eventhandlersampleclasslibrary,Version=  1.0.0.0,Culture=neutral,PublicKeyToken=fd7c0a9671b2ae14”;    newReceiver.SequenceNumber = 5000;  

 newReceiver.Type = SPEventReceiverType.ItemDeleting;    newReceiver.Update(); 

  Console.Read(); 

 } 

}

}

Now the event has been deployed.Output

When  tried to delete the item

Whenever any item will get deleted user will get error message.

Done!!

This entry was posted in Sharepoint. Bookmark the permalink.

Leave a comment