Document sets are more than simple folders. They hold metadata, which is changing the way users are working and they are taking advantage of it.
Below code will show you how to create document sets programmatically,
Add reference of Microsoft.Office.DocumentManagement.dll in your project and use below code, available at the directory \14\ISAPI\.
String LIBRARY_NAME = "Document Set Example";
String DOCUMENT_SET = "Document Set";
using (SPSite site = new SPSite("http://br-pc-203"))
{
using (SPWeb web = site.RootWeb)
{
string docSetContentTypeName = "My Document Set";
SPContentType ctype = null;
if (web.ContentTypes[docSetContentTypeName] == null)
{
// Creating the document set (content type)
ctype = new SPContentType(web.ContentTypes[DOCUMENT_SET], web.ContentTypes, docSetContentTypeName);
ctype.FieldLinks.Add(new SPFieldLink(web.Fields[SPBuiltInFieldId.Birthday]));
ctype.Group = "Custom Content Type";
web.ContentTypes.Add(ctype);
// Getting the document set (content type)
DocumentSetTemplate documentContentType = DocumentSetTemplate.GetDocumentSetTemplate(ctype);
// Sharing fields
documentContentType.SharedFields.Add(web.Fields[SPBuiltInFieldId.Birthday]);
// Displaying fields
documentContentType.WelcomePageFields.Add(web.Fields[SPBuiltInFieldId.Birthday]);
// Updating the document set (content type),
documentContentType.Update(true);
ctype.Update();
}
ctype = ctype ?? web.ContentTypes[docSetContentTypeName];
if (web.Lists.TryGetList(LIBRARY_NAME) == null)
{
// Creating document library
Guid libraryGuid = web.Lists.Add(LIBRARY_NAME, "", SPListTemplateType.DocumentLibrary);
SPDocumentLibrary list = (SPDocumentLibrary)web.Lists[libraryGuid];
// Setting properties
list.OnQuickLaunch = true;
list.ContentTypesEnabled = true;
list.EnableFolderCreation = false;
// Defining content types
list.ContentTypes.Delete(list.ContentTypes["Document"].Id);
list.ContentTypes.Add(ctype);
list.Update();
System.Collections.Hashtable properties = new System.Collections.Hashtable();
properties.Add("DocumentSetDescription", "My first Document Set by Code"); //InternalName
properties.Add("Birthday", DateTime.Now); //InternalName
// Creating the document set
DocumentSet.Create(list.RootFolder, "My First Document Set", list.ContentTypes.BestMatch(ctype.Id), properties, true);
}
}
}
You are the man!
ReplyDeleteNice!!
ReplyDelete