2

The following articles...

http://moonistahir.wordpress.com/2008/05/05/properties-listitem-in-itemadded-is-null-workaround-to-get-listitem/

http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/thread/8712648e-cf09-4f7b-ab13-1c6aacdf588a/

...attempt to address a problem that I just cannot seem to solve.

Basically, I've deployed an event receiver that deals with the item added event to a custom list I have created. This all works fine, and my code is hit (breakpoints) but I cannot find the newly added list item anywhere in the properties of SPItemEventProperties.

I've tried the two proposed solutions I've posted links to above and my code now currently looks like:

public class EventReceiver1 : SPItemEventReceiver
{
   List<String> explosives = new List<string>() { "gunpowder", "dynamite", "fireworks", "fuel" };

   public override void ItemAdding(SPItemEventProperties properties)
   {
       base.ItemAdding(properties);

       SPSite CurrentSite = new SPSite(properties.SiteId);
       SPWeb CurrentWeb = CurrentSite.OpenWeb(properties.RelativeWebUrl);
       SPList CurrentList = CurrentWeb.Lists[properties.ListId];
       //The line below is where the error is ("Can't find item, may have been deleted by another user")
       SPListItem item = CurrentList.GetItemById(properties.ListItemId);

       if (explosives.Contains(item["Title"].ToString().ToLower()))
       {
           item["Title"] += " (DANGEROUS!)";
           item.Update();
       }
   }
}

But no joy. Any help is greatly appreciated.

EDIT: I should also mention that as an alternative to GetItemById, I did just try using CurrentList.Items.Count - 1 hoping the last item would be the new one, but it wasn't there either.

3 Answers 3

5

If you are calling the ItemAdding event, the ListItemId is not going to exist yet. Try using the ItemAdded event instead.

3
  • Thanks a lot @Blue Murphy, sorted. Can't believe I've missed that, embarrassing. Still, seems to be a problem that requires work arounds in other cases. Thanks again. Apr 24, 2012 at 15:15
  • 1
    Oh Jesus, now I feel stupid. Apr 24, 2012 at 16:02
  • 3
    It has nothing to do with intelligence. It's all in how you cock your head. Apr 24, 2012 at 16:22
0

ItemAdded never fires in debug mode, lots of people having same issue

0
0

ItenAdded even is asynchronous, but it is firer before item is actually added.

To fix this issue you can sleep thread where ItemAdded method is executed and wait while this property will not be null

int counter = 5;
while (counter > 0 && properties.ListItem == null)
{
    System.Threading.Thread.Sleep(1000);
}
//your code

Your Answer

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

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