Export (0) Print
Expand All
Expand Minimize

SPWeb.AvailableContentTypes Property

Windows SharePoint Services 3

Gets the collection of all content types that apply to the current scope, including those of the current Web site, as well as any parent Web sites.

Namespace:  Microsoft.SharePoint
Assembly:  Microsoft.SharePoint (in Microsoft.SharePoint.dll)

public SPContentTypeCollection AvailableContentTypes { get; }

Property Value

Type: Microsoft.SharePoint.SPContentTypeCollection
An SPContentTypeCollection object that represents the content types.

You can apply any content type that is returned in this collection to lists in the current Web site. However, you cannot add content types to the collection that is returned in this property. It is a read-only property.

If you want to make a new content type available, you must add it to the collection that is returned by the ContentTypes property. That collection includes only the content types that exist in the current Web site.

The following example shows a console application that gets a content type from the collection that is returned by the AvailableContentTypes property, and then applies it to a list in the current Web site.

using System;
using Microsoft.SharePoint;

namespace Test
{
   class ConsoleApp
   {
      static void Main(string[] args)
      {
         using (SPSite site = new SPSite("http://siteUrl"))
         {
            using (SPWeb web = site.OpenWeb())
            {
               // Get a content type
               SPContentType ct = web.AvailableContentTypes[SPBuiltInContentTypeId.Document];

               if (ct != null) // We have a content type
               {
                  try // Get a list
                  {
                     SPList list = web.Lists["Test List"]; // Throws exception if does not exist

                     // Make sure we can add content types
                     list.ContentTypesEnabled = true;

                     // Add the content type to the list
                     if (!list.IsContentTypeAllowed(ct))
                        Console.WriteLine("The {0} content type is not allowed on the {1} list",
                                           ct.Name, list.Title);
                     else if (list.ContentTypes[ct.Name] != null)
                        Console.WriteLine("The content type name {0} is already in use on the {1} list",
                                           ct.Name, list.Title);
                     else
                        list.ContentTypes.Add(ct);
                  }
                  catch (ArgumentException ex) // No list
                  {
                     Console.WriteLine("The list does not exist.");
                  }
               }
               else // No content type
               {
                  Console.WriteLine("The content type is not available in this site.");
               }
            }
         }
         Console.Write("\nPress ENTER to continue...");
         Console.ReadLine();
      }
   }
}

Community Additions

ADD
Show:
© 2014 Microsoft