SharePoint Lists are enabled with multiple content types, because of that we can add items with different type of properties and documents. In advanced, the New Menu displays those Content type available in List as its sub-menu.

image

Fig1 Content Types Visible in New Menu

So how the SharePoint displays those Content types under New menu and how we can enable and disable those content types under that new Menu.

So here is the simple snippet to list out the content types enabled in New Menu.

SPList list = web.Lists["ListName"];

IList ctoFolder = list.RootFolder.UniqueContentTypeOrder;

foreach (SPContentType ctype in ctoFolder)
{
    Console.WriteLine(ctype.Name);
}

UniqueContentTypeOrder of SPFolder member lists out the Content Types visible on New Menu. Now we’ll see the code for removing the ContentType on New menu.

SPList list = web.Lists["ListName"];

IList ctoFolder = list.RootFolder.UniqueContentTypeOrder;

//Code for removing the Content Type sub-menu in New Menu.

//Removing the "Test Content Type" menu under New Menu

for (int i = ctoFolder.Count – 1; i >= 0; i–)
{
    if (ctoFolder[i].Name == "Test Content Type")
    {
        ctoFolder.Remove(ctoFolder[i]);                           
    }                       
}

list.RootFolder.UniqueContentTypeOrder = ctoFolder;
list.RootFolder.Update();

//Code for adding the Content type sub-menu under New Menu

//Adding the "Test Content type" menu under New Menu

SPContentType ctype = list.ContentTypes["Test Content Type"];                                       
ctoFolder.Add(ctype);
list.RootFolder.Update();

The above helps us to enable and disable the Content type on New Button in SharePoint List.