4

In SharePoint 2013, how can I stop users from deleting a item from one of many lists on many sites.

We can't change permissions level because it's a enterprise level product and dealing with permissions for such tasks would take ages and will create a lot of mess , I am thinking about using event receiver to stop user from deleting item but how ?

public override void ItemDeleting(SPItemEventProperties properties)
{
    //base.ItemDeleting(properties);
    properties. // how to cancel ??
}
4
  • 3
    So you plan to introduce server side code when an ootb approach works just fine for this? Commented May 14, 2015 at 12:25
  • @EricAlexander we can't change permission levels, what other option do we have here - other then ER? Commented May 14, 2015 at 12:47
  • 1
    "I am not going to change permissions level" is a lot different than we can't. The better option to me is creating a custom contribute permission with delete items unchecked and applying that to the group than building server side code to do it regardless of what the requirement is. Just because you can code out a solution to do it does not mean that is the proper approach. ER would be the only approach, but would be the wrong implementation IMHO. Commented May 14, 2015 at 12:55
  • updated my question#, 1 site 5 lists (template - deployed hundred times), only don't want user to be able to delete items from 1 list, changing permission levels won't work here btw Commented May 14, 2015 at 12:57

3 Answers 3

9
properties.Status = SPEventReceiverStatus.CancelNoError; OR .CancelWithError
3
4

The following code snippet will prevent item deletion and also notify the user of what happened

public override void ItemDeleting(SPItemEventProperties properties)
{
    base.ItemDeleting(properties);
    properties.Status = SPEventReceiverStatus.CancelWithError;
    properties.ErrorMessage = "This item cannot be deleted; Contact your administrator";

}

The above snippet generates the following error when a user tries to delete an item in a list where the event receiver is active: enter link description here

http://bramnuyts.be/en/2013/07/18/prevent-items-from-being-deleted-using-an-eventreceiver/

How to create the event reciver, please follow this: Creating a simple Event Receiver in SharePoint 2013

3
2

You can use below ItemDeleting method:

public override void ItemDeleting(SPItemEventProperties properties)
{
    properties.ErrorMessage = "Your Message goes here!";
    properties.Cancel = true;
}

UPDATE

As above method is deprecated you can use below method, using Status property.

SPEventPropertiesBase.Status property

public override void ItemDeleting(SPItemEventProperties properties) {
    properties.Status = SPEventReceiverStatus.CancelNoError;
}
3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.