We developed an ItemEventReceiver to do somthing whenever a list item is added to a list.
In order to register this ItemEventReceiver to a list I created a WinForm application that should run on the MOSS and should register the ItemEventReceiver assembly to the list.
The application has the abbility to add the ItemEventReceiver assembly to any of the list item's available Event Types.
This is a quite simple application:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.SharePoint;
namespace MOSSListEventRegister
{
public partial class MOSSListEventRegisterForm : Form
{
public MOSSListEventRegisterForm()
{
InitializeComponent();
}
private void MOSSListEventRegisterForm_Load(object sender, EventArgs e)
{
//Fill EventReceiverTypeCheckedListBox
EventReceiverTypeCheckedListBox.Items.Add("ItemAdded");
EventReceiverTypeCheckedListBox.Items.Add("ItemAdding");
EventReceiverTypeCheckedListBox.Items.Add("ItemAttachmentAdded");
EventReceiverTypeCheckedListBox.Items.Add("ItemAttachmentAdding");
EventReceiverTypeCheckedListBox.Items.Add("ItemAttachmentDeleted");
EventReceiverTypeCheckedListBox.Items.Add("ItemAttachmentDeleting");
EventReceiverTypeCheckedListBox.Items.Add("ItemCheckedIn");
EventReceiverTypeCheckedListBox.Items.Add("ItemCheckedOut");
EventReceiverTypeCheckedListBox.Items.Add("ItemCheckingIn");
EventReceiverTypeCheckedListBox.Items.Add("ItemCheckingOut");
EventReceiverTypeCheckedListBox.Items.Add("ItemDeleted");
EventReceiverTypeCheckedListBox.Items.Add("ItemDeleting");
EventReceiverTypeCheckedListBox.Items.Add("ItemUpdated");
EventReceiverTypeCheckedListBox.Items.Add("ItemUpdating");
}
private void RegisterButton_Click(object sender, EventArgs e)
{
SPSite site = null;
SPWeb web = null;
SPList myList = null;
try
{
site = new SPSite(SiteURLTextBox.Text);
web = site.OpenWeb();
myList = web.Lists[ListsNameComboBox.SelectedText];
for (int i = 0; i < EventReceiverTypeCheckedListBox.Items.Count; i++)
{
switch (EventReceiverTypeCheckedListBox.Items.ToString())
{
case "ItemAdded":
myList.EventReceivers.Add(SPEventReceiverType.ItemAdded, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemAdding":
myList.EventReceivers.Add(SPEventReceiverType.ItemAdding, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemAttachmentAdded":
myList.EventReceivers.Add(SPEventReceiverType.ItemAttachmentAdded, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemAttachmentAdding":
myList.EventReceivers.Add(SPEventReceiverType.ItemAttachmentAdding, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemAttachmentDeleted":
myList.EventReceivers.Add(SPEventReceiverType.ItemAttachmentDeleted, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemAttachmentDeleting":
myList.EventReceivers.Add(SPEventReceiverType.ItemAttachmentDeleting, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemCheckedIn":
myList.EventReceivers.Add(SPEventReceiverType.ItemCheckedIn, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemCheckedOut":
myList.EventReceivers.Add(SPEventReceiverType.ItemCheckedOut, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemCheckingIn":
myList.EventReceivers.Add(SPEventReceiverType.ItemCheckingIn, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemCheckingOut":
myList.EventReceivers.Add(SPEventReceiverType.ItemCheckingOut, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemDeleted":
myList.EventReceivers.Add(SPEventReceiverType.ItemDeleted, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemDeleting":
myList.EventReceivers.Add(SPEventReceiverType.ItemDeleting, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemUpdated":
myList.EventReceivers.Add(SPEventReceiverType.ItemUpdated, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
case "ItemUpdating":
myList.EventReceivers.Add(SPEventReceiverType.ItemUpdating, AssemblyNameTextBox.Text, ClassNameTextBox.Text);
break;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (site != null)
{
site.Close();
site = null;
}
if (web != null)
{
web.Close();
web = null;
}
}
}
private void GetListsButton_Click(object sender, EventArgs e)
{
SPSite site = null;
SPWeb web = null;
SPList myList = null;
try
{
ListsNameComboBox.Items.Clear();
site = new SPSite(SiteURLTextBox.Text);
web = site.OpenWeb();
foreach (SPList lst in web.Lists)
{
if (!lst.Hidden )
ListsNameComboBox.Items.Add(lst.Title);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (site != null)
{
site.Close();
site = null;
}
if (web != null)
{
web.Close();
web = null;
}
}
}
}
}