Advertisement

08.04.2008 at 08:13AM PDT, ID: 23619286
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

6.4

Event receiver in issues list - executing only on condition

Asked by dasani2008 in MOSS-Sharepoint

Tags: , , ,

I have created an event receiver in the Issues Tracking list template.  I was using the ItemAdded and ItemUpdated overloads and it worked fine.  Basically, when a new post was made, it would create an item in another list.  However, now I need to ONLY create the item in the other list when the status field is changed.  So I need to check the status before it's written to the database and compare it to the status after it's committed.  The BeforeProperties property only works on the document library template.  So I was trying to use the SPItem class to get the item value and then use the AfterProperties property to get the value after it was committed to the database.  Below is my code (you can assume I have my feature installed, activated the setup is done properly).

However, when I use AfterProperties and go in to EDIT an existing list item, it generates an error in the event log as shown below.  If I do not use it, there is no error.  So there is something wrong with how I'm using it.  Can someone please assist?

Error loading and running event receiver OpsStatusEventHandler.OpsStatusHandler in OpsStatusEventHandler, Version=2.1.3.0, Culture=neutral, PublicKeyToken=05faedc0d96b5398. Additional information is below.

: Object reference not set to an instance of an object.
Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
 
namespace OpsStatusEventHandler
{
    public class OpsStatusHandler : SPItemEventReceiver
    {
        public override void ItemUpdating(SPItemEventProperties properties)
        {
            DoWork(properties);
        }
        
        public void DoWork(SPItemEventProperties properties)
        {
            SPListItem spitem = properties.ListItem;
 
            string titleval = spitem["Title"].ToString();
            string beginstatus = spitem["IssueStatus"].ToString();
            string commentstext = spitem["Comments"].ToString();
 
            string afterstatus = properties.AfterProperties["IssueStatus"].ToString();
 
                string strDashListRoot = "http://myserver/sites/MyForms/Lists/Event%20Handler%20Tracking/";
                using (SPSite site = new SPSite(strDashListRoot))
                {
                    using (SPWeb web = site.OpenWeb())
                    {
                        SPList list = web.Lists["Event Handler Tracking"];
                        SPListItem Item = list.Items.Add();
                        Item["Title"] = titleval.ToString();
                        Item["Status"] = beginstatus.ToString();
                        Item["DateUpdated"] = System.DateTime.Now;
                        Item["Comments"] = "After: " + afterstatus.ToString();
                        Item.Update();
                    }
                }
            }
 
        }   
}
[+][-]08.04.2008 at 10:15AM PDT, ID: 22154154

View this solution now by starting your 14-day free trial. Setting up your free trial is quick, easy, and secure. We will return you to this solution, unlocked, when you're done.

 

About this solution

Zone: MOSS-Sharepoint
Tags: Microsoft, SharePoint 2007, 2007, c#
Sign Up Now!
Solution Provided By: dasani2008
Participating Experts: 0
Solution Grade: A
 
 
 
Loading Advertisement...
20081112-EE-VQP-43 / EE_QW_2_20070628