List Events Handling in SharePoint 2007


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 of Microsoft.SharePoint.dll assembly.
  2. Sign the class library with strong name.
  3. Deploy the class library to GAC
  4. Deploy the event receiver assembly.

Step 1: Creating the class

Create a new project of type class library. I am giving name of the project eventhandlersampleclasslibrary. You are free to give any name of your choice. I am extending the SPItemEventReceiver. The purpose of extending this class is that I am 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.

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 ; you are not supposed too ";
            properties.ErrorMessage = errorMessage;
            properties.Cancel = true;
        }
    }
}


Step 2: 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.

    ListEvent1.gif


    ListEvent2.gif

Step 3: 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

    ListEvent3.gif
     
  3. Type the command gacutil /I complete path of the dll of class created as eventreceiver class in step1

Gacutil /I [Complte path of dll of class]

The above command will deploy the dll in Gac assembly.

Step 4: Deploy the Event Receiver assembly

This 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.
  8. Class name is the name of the class, you created in step1.
  9. Assembly is the assembly information of the dll in GAC. To get information about dll in GAC follow below steps.

    a. Go to Start -> Run
    b. Type Assembly

    ListEvent4.gif

    c. Window will open; seek for dll you added.
    d. Right click there and go to properties for all the information. 

    ListEvent5.gif
     
  10. In Type select ItemDeleting.
  11. Then call the update method.

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

ListEvent6.gif

When I tried to delete the item

ListEvent7.gif

I got the below error message;

ListEvent8.gif

Conclusion

I have shown how to handle item deleting event. Whenever any item will get deleted user will get error message. Thanks for reading.

Happy Coding.

Up Next
    Ebook Download
    View all
    Learn
    View all