In this article we will be seeing how to change a batch of files in a document library from one content type to another using C#.
I have batch of files in a document library which belongs to the "Document "content type. I want to change the content type from "Document" to "_CustomContentType (which is a custom content type).
Steps Involved:
a. Open Visual Studio 2010.
b. Create a console application.
c. Replace the code with the following.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace ChangeContentType
{
class Program  Â
{
static void Main(string[] args)Â Â Â Â Â Â Â
{
using (SPSite site = new SPSite("http://serverName:1111/SitePages/Home.aspx"))Â Â Â Â Â Â Â Â Â Â Â
{
using (SPWeb web = site.RootWeb)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
{
SPList list = web.Lists["Shared Documents"];
SPContentType oldCT = list.ContentTypes["Document"];
SPContentType newCT = list.ContentTypes["_CustomContentType"];
SPContentTypeId newCTID = newCT.Id;
if ((oldCT !=null) && (newCT != null))Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
{
foreach (SPListItem item in list.Items)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
{
if (item.ContentType.Name == oldCT.Name)Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
{
if (item.File.CheckOutType.ToString() == "None")Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
{Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
item.File.CheckOut();Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
item["ContentTypeId"] = newCTID;Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
item.Update();Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
item.File.CheckIn("Checked in");Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}
else                              Â
{
Console.WriteLine("File " + item.Name + "is checked out to" + item.File.CheckedOutByUser.ToString() + " and cannot be modified");Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}
else                          Â
{
Console.WriteLine("File "+item.Name+ " is associated with the content type "+ item.ContentType.Name+ " and shall not be modified");Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}
else                  Â
{
Console.WriteLine("One of the content types specified has not been attached to the list "+list.Title);Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}
Console.ReadLine();Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â
}Â Â Â Â Â Â Â Â Â Â Â
}Â Â Â Â Â Â Â
}Â Â Â
}
}
d. Hit F5.
Comments