I am trying to generate Random string and storing it to column when new document is inserted in document library.
I am using SPItemEventListener to handle this event. Here Is my code.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.Office.Server;
using Microsoft.Office.Server.UserProfiles;
namespace SharePointProject1.EventReceiver1
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// An item is being added.
/// </summary>
///
private readonly Random _rng = new Random();
private const string _chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private string RandomString(int size)
{
char[] buffer = new char[size];
for (int i = 0; i < size; i++)
{
buffer[i] = _chars[_rng.Next(_chars.Length)];
}
return new string(buffer);
}
private string createDocNum(SPItemEventProperties properties)
{
int newRnd = 0;
do
{
// set static department
string dept = "QUA";
// set date without separators
string dateString = DateTime.Today.ToString("ddMMyyyy");
// get 1st random string
string Rand1 = RandomString(4);
// get 2nd random string
string Rand2 = RandomString(4);
// creat full document number
string docNum = dept + "-" + dateString + "-" + Rand1 + "-" + Rand2;
using (SPWeb oWeb = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl))
{
SPSiteDataQuery q = new SPSiteDataQuery();
q.Lists = "<Lists BaseType='1'/>";
q.Query = "<Where><Eq><FieldRef Name='DocumentNumber' /><Value Type='Text'>" + docNum + "</Value></Eq></Where>";
q.Webs = "<Webs Scope='SiteCollection' />";
q.RowLimit = 1;
System.Data.DataTable spSiteDataQueryResults = oWeb.GetSiteData(q);
if (spSiteDataQueryResults.Rows.Count > 0)
{
newRnd = 0;
}
else
{
newRnd = 1;
}
}
return docNum;
}
while (newRnd < 1);
}
public override void ItemAdded(SPItemEventProperties properties)
{
this.DisableEventFiring();
properties.ListItem["DocumentNumber"] = properties.AfterProperties["DocumentNumber"];
properties.ListItem.SystemUpdate();
this.EnableEventFiring();
}
private void EnableEventFiring()
{
}
private void DisableEventFiring()
{
}
public override void ItemAdding(SPItemEventProperties properties)
{
string documentNum = createDocNum(properties);
this.DisableEventFiring();
properties.AfterProperties["DocumentNumber"] = documentNum;
this.EnableEventFiring();
}
public override void ItemUpdated(SPItemEventProperties properties)
{
base.ItemUpdated(properties);
}
public override void ItemUpdating(SPItemEventProperties properties)
{
base.ItemUpdating(properties);
}
}
}
When I am adding the document I am getting following error in logviewer
UserAgent not available, file operations may not be optimized
Sandboxed code solution has leaked these IDisposable objects
My Document Library look like this:

Reference : https://stackoverflow.com/questions/1109703/generating-unique-random-string-in-sharepoint-document-library