SharePoint Event Handler
I'm having an issue with an event handler in SharePoint.
I have a list of items (List A) which has an event handler attached to it with code for ItemAdded and ItemUpdated.
When either of these events triggers, I want another list (List B) to be updated with the minimum value of all similarly names items in List A. Think almost like Min(FieldX).
e.g.
ListA
ItemName Value CategoryA 2 CategoryA 4 CategoryA 3 CategoryB 1 CategoryB 8List B
ItemName Value CategoryA 2 CategoryB 1If someone updates one of the CategoryA items in ListA 开发者_运维百科to have a value of 0, then the event handler would replace the CategoryA item within ListB with the new value of 0.
Currently I am doing this by deleting all items in ListB, then getting all unique ItemNames from ListA and inserting the lowest value of each into ListB.
This works fine if you edit one item at a time, but if you Edit in Datasheet, it gets in a right mess due to the asynchronous nature. Sometimes it will work, sometimes it won't and that is no good.
What would be the best practice way of doing something like this? With so many items being edited asynhronously, how would you update a rollup table like this in a consistent manner?
Thanks
Which event are you catching - the Synchronous *ing (ItemAdding) events or the Async *ed (ItemAdded) events?
One suggestion is for the event to kick off a timer job to update the summary list. Your event handler then simply cheks to see if the job is scheduled (for a minutes time?) and if not schedules it. Then it won't matter about multiple quick updates.
Long Running Operations: Consider creating a custom SharePoint timer job. Kick off/ Schedule the Timer Job from the event rather than running all the logic inside the event. This will allow you to use the features of SharePoint to view whether the Timer Job ran successfully
Event Handlers - Part 1: Everything you need to know about ... SharePoint ... Event Handlers.
Another suggestion - do you need to precalculate this and store it in a list? If its just for display could you not write a custom web part do this on the fly, cache the results and clear the cache depending on the SPList.ListItemModified and .LastItemDeleted times?
精彩评论