The following Event Handler code will prevent users from creating duplicate value in "Title" field.
ItemAdding Event Handler
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
if (properties.ListTitle.Equals("My List"))
{
try
{
using(SPSite thisSite = new SPSite(properties.WebUrl))
{
SPWeb thisWeb = thisSite.OpenWeb();
SPList list = thisWeb.Lists[properties.ListId];
SPQuery query = new SPQuery();
query.Query = @"<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>" + properties.AfterProperties["Title"] + "</Value></Eq></Where>";
SPListItemCollection listItem = list.GetItems(query);
if (listItem.Count > 0)
{
properties.Cancel = true;
properties.ErrorMessage = "Item with this Name already exists. Please create a unique Name.";
}
}
}
catch (Exception ex)
{
PortalLog.LogString("Error occured in event ItemAdding(SPItemEventProperties properties)() @ AAA.BBB.PreventDuplicateItem class. Exception Message:" + ex.Message.ToString());
throw new SPException("An error occured while processing the My List Feature. Please contact your Portal Administrator");
}
}
}
Feature.xml
<?xml version="1.0" encoding="utf-8"?>
<Feature Id="1c2100ca-bad5-41f5-9707-7bf4edc08383"
Title="Prevents Duplicate Item"
Description="Prevents duplicate Name in the "My List" List"
Version="12.0.0.0"
Hidden="FALSE"
Scope="Web"
DefaultResourceFile="core"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml"/>
</ElementManifests>
</Feature>
Element.xml
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Receivers ListTemplateId="100">
<Receiver>
<Name>AddingEventHandler</Name>
<Type>ItemAdding</Type>
<SequenceNumber>10000</SequenceNumber>
<Assembly>AAA.BBB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=8003cf0cbff32406</Assembly>
<Class>AAA.BBB.PreventDuplicateItem</Class>
<Data></Data>
<Filter></Filter>
</Receiver>
</Receivers>
</Elements>
The source code of this feature is available at
Technet Gallery