Wednesday, August 8, 2007

MOSS List Event Receiver Register application

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;

}

}

}

}

}

2 comments:

anasua said...

Hi,
The tool seems very interesting, but i am facing problem in creating the ItemReceiverEvent. It will be very helpful if you can send me a code for developing ItemReceiverEvent.
My Code looks like :
public class test : SPItemEventReceiver
{
public override void ItemAdding(SPItemEventProperties properties)
{
SPWeb web = properties.OpenWeb();
Guid ListID = properties.ListId;
int ListItemID = properties.ListItemId;
SPListItem projects = web.Lists[ListID].GetItemById(ListItemID);
string ProjectType = Convert.ToString(projects["ProjectType"]);
if (ProjectType != "Developmant")
{
properties.ErrorMessage = "Some Error";
properties.Cancel = true;
return;
} } }

anasua said...

Hi,
The tool seems very interesting, but i am facing problem in creating the ItemReceiverEvent. It will be very helpful if you can send me a code for developing ItemReceiverEvent.
My Code looks like :
public class test : SPItemEventReceiver
{
public override void ItemAdding(SPItemEventProperties properties)
{
SPWeb web = properties.OpenWeb();
Guid ListID = properties.ListId;
int ListItemID = properties.ListItemId;
SPListItem projects = web.Lists[ListID].GetItemById(ListItemID);
string ProjectType = Convert.ToString(projects["ProjectType"]);
if (ProjectType != "Developmant")
{
properties.ErrorMessage = "Some Error";
properties.Cancel = true;
return;
} } }