Sometimes we are in a situation that we need to restrict a user to delete a
particular item from a sharepoint list, but how to restrict them.
There are two ways of doing that
- First method is to give Item Level Permission. But the problem with this
method is: Suppose one user added two items and wanted to delete one of them but
we have some business logic that he should not be able to delete that particular
item than how to restrict him for that particular item and allowed to delete
another item.
- Second method is to write an Event handler.
In this article we will see that how to use item deleting event to restrict a
user so that he will not be able to delete the item of a sharepoint list.
Step1. Open visual studio create one class library project.
Step2: Add the reference for Microsoft.Sharepoint.dll as shown below.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
Step3: To use the ItemDeleting event we need to inherit our class from
SPItemEventReciever class as shown below.
public class
Class1 :SPItemEventReceiver
Step4: Next step is to override ItemDeleting function as shown below.
public override
void ItemDeleting(SPItemEventProperties
properties)
{
SPListItem Item = properties.ListItem;
if (Item["Vendor
Name"] != null)
{
if (Item["Vendor
Name"].ToString() == "Ravish")
{
//For canciling the delete
operation
properties.Cancel = true;
//Show error message to user
properties.ErrorMessage =
"Can't Delete";
}
}
}
Step5: To increase the trust level we need to sign the assembly created. To sign
the assembly go to property page and check the box Sign the assembly as shown
below.
Step6: After that build the solution once again. Your event handler dll is
ready. Now next step is to register the event handler to sharepoint list. To
register the event handler follow the below mentioned steps.
Register Event Handler:
There are so many ways to register an event. Here we are using U2U Event Handler
Explorer to register the event to sharepoint list.
Step1: Place the signed DLL file in GAC.
Step2: Open U2U event handler explorer and explore the URL as shown in below
screenshot.
Step2.1: Explore to the List on which you want to register event. In this case
it is Vendor.
Step3: First Click on Vendor list and after that click on Load Assembly and add
the browse to the event handler DLL.
Step4: Click on the Class DropDown list and select the class name that we have
given in our class library.
Step5: give a sequence number. The number should be greater than 10000. You can
give any random number.
Step6: Click on Add Handler button and do IISRESET.
Your event handler has been registered.
Now click on item which you want to delete as shown in the below screen shot.
After click on delete you will get the below screen with the error message
'Can't Delete' as specified in our code because Vendor name was "Ravish" as you
know we are checking this condition in our code that if the vendor name Is
Ravish than set Property.Cancel to true. This will restrict the user to delete
the list item with vendor name "Ravish".
In this way we can restrict the user to delete the List Item using event
handler.
Code:
using
System;
using
System.Collections.Generic;
using
System.Text;
using
Microsoft.SharePoint;
namespace
ItemDeletingEventHandler
{
public class
Class1 :SPItemEventReceiver
{
public override
void ItemDeleting(SPItemEventProperties
properties)
{
SPListItem Item = properties.ListItem;
if (Item["Vendor
Name"] != null)
{
if (Item["Vendor
Name"].ToString() == "Ravish")
{
//For canciling the delete
operation
properties.Cancel = true;
//Show message to user
properties.ErrorMessage =
"Can't Delete";
}
}
}
}
}
Thank you!
Ravish