public static void AddCustomDocumentLibraryColumn(string documentLibraryName, string
columnName,string columnDisplayName,string columnDescription, SPFieldType
columnDataType)
{
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite
site = new SPSite(SPContext.Current.Site.ID))
{
using (SPWeb web =
site.OpenWeb())
{
SPDocumentLibrary
docLibrary = null;
if (web.TryGetDocumentLibrary(documentLibraryName, out docLibrary))
{
if (!docLibrary.Fields.ContainsField(columnName))
{
bool allowUnsafeUpdateState = web.AllowUnsafeUpdates;
web.AllowUnsafeUpdates = true;
SPView defaultView = docLibrary.DefaultView;
SPField libField = docLibrary.Fields.GetField(
docLibrary.Fields.Add(columnName, columnDataType, true));
libField.Description = columnDescription;
libField.Title = columnDisplayName;
libField.Required = true;
libField.Update();
defaultView.ViewFields.Add(libField);
defaultView.Update();
docLibrary.Update();
web.Update();
web.AllowUnsafeUpdates = allowUnsafeUpdateState;
}
}
}
}
});
}
catch (Exception
ex)
{
}
}
TryGetDocumentLibrary is an extended function of the Web.
public static bool TryGetDocumentLibrary(this
SPWeb web, string
documentLibraryName,
out SPDocumentLibrary
documentLibrary)
{
bool
isDocumentLibraryExist = false;
web.AllowUnsafeUpdates = true;
if (true ==
web.Properties.ContainsKey(documentLibraryName))
{
try
{
documentLibrary = web.Lists[new Guid(web.Properties[documentLibraryName])]
as SPDocumentLibrary;
isDocumentLibraryExist = true;
}
catch
{
web.Properties[documentLibraryName] = null;
web.Properties.Update();
TryGetDocumentLibrary(web, documentLibraryName, out
documentLibrary);
}
}
else
{
documentLibrary = (from SPList list in
web.Lists
where
list.RootFolder.Name.Equals(documentLibraryName,
StringComparison.InvariantCulture)
select list).FirstOrDefault() as SPDocumentLibrary;
if (documentLibrary != null)
{
web.Properties.Add(documentLibraryName, documentLibrary.ID.ToString("B"));
web.Properties.Update();
isDocumentLibraryExist = true;
}
}
web.AllowUnsafeUpdates = false;
return isDocumentLibraryExist;
}