Поделиться через


Метод SPContentType.Delete

Удаляет тип контента.

Пространство имен:  Microsoft.SharePoint
Сборка:  Microsoft.SharePoint (в Microsoft.SharePoint.dll)

Синтаксис

'Декларация
Public Sub Delete
'Применение
Dim instance As SPContentType

instance.Delete()
public void Delete()

Исключения

Исключение Условие
SPException

Коллекции родительского типа контента доступен только для чтения.

- или -

Тип содержимого — последний тип содержимого для SPList , на котором находится коллекция родительского типа содержимого.

- или -

Тип содержимого уже используется.

- или -

Тип содержимого является частью компонента приложения.

ArgumentOutOfRangeException

Тип содержимого уже был удален из коллекции его родителя.

SPContentTypeSealedException

Тип содержимого является запечатанным.

SPContentTypeReadOnlyException

Этот тип контента доступен только для чтения.

Замечания

Невозможно удалить тип контента сайта, если он используется как основа для типов контента сайта или списка. Необходимо сначала удалить этот тип контента из всех списков, использовать его, а затем удалите всех дочерних типов содержимого узла, на его основе.

Невозможно удалить тип контента из списка, если список содержит элементы этого типа содержимого. SharePoint Foundation элементов, отправленных в корзину, если выполнить такое рекурсивное определение не учитывает. Если элементов определенного типа содержимого списка будут восстановлены после их тип контента был удален из этого списка, элементы присваивается тип содержимого по умолчанию для этого списка.

Совет

Может потребоваться рассмотреть альтернативы просто удаление элементов из-за своего типа содержимого является устаревшим. Попробуйте оставить устаревшей содержимого типа и значения свойства Hiddentrue. Это удаляет используется тип содержимого из меню Создать на любой список, где типом содержимого, тем самым предотвращая добавление новых элементов этого типа содержимого в список, хотя и в то же время, сохраняя содержимое существующих элементов.

Примеры

Следующий пример состоит из двух методов из более крупных приложений. Первый метод DeleteListContentTypeпринимает в качестве своего единственного параметра объект SPContentType . Этот метод сначала проверяет, что объект является производным из коллекции типов контента списка. Затем метод вызывает второй метод DeleteListItems, передав идентификатор типа содержимого в списке и в качестве аргументов. Второй метод выполняет поиск в списке элементов заданного типа содержимого и удаляет их. Когда управление возвращается в метод DeleteListContentType , он удаляет тип содержимого.

Function DeleteListContentType(ByRef ct As SPContentType) As Boolean
  ' Make sure we have a content type.
  If ct Is Nothing Then
     Throw New ArgumentException("Content type is null.")
  End If

  ' Make sure we have a list content type.
  If ct.ParentList Is Nothing Then
     Return False
  End If

  ' Delete list items of this content type.
  DeleteListItems(ct.ParentList, ct.Id)

  ' Check for read-only and sealed.
  If ct.ReadOnly Then
     ct.ReadOnly = False
  End If
  If ct.Sealed Then
     ct.Sealed = False
  End If

  ' Delete it.
  ct.Delete()
  Return True
End Function

Sub DeleteListItems(ByRef list As SPList, ByVal id As SPContentTypeId)
   Dim items As SPListItemCollection =  list.Items 
   Dim count As Integer =  items.Count  'Count will change
   Dim i As Integer
   For  i = count -1 To  0 Step  i - 1
      Dim item As SPListItem =  items(i) 
      If item.ContentType.Id = id Then
         item.Delete()
      End If
   Next
   list.Update()
End Sub
static bool DeleteListContentType(SPContentType ct)
{
   // Make sure we have a content type.
   if (ct == null)
      throw new ArgumentException("Content type is null.");

   // Make sure we have a list content type.
   if (ct.ParentList == null)
      return false;

   // Delete list items of this content type.
   DeleteListItems(ct.ParentList, ct.Id);

   // Check for read-only and sealed.
   if (ct.ReadOnly)
      ct.ReadOnly = false;
   if (ct.Sealed)
      ct.Sealed = false;

   // Delete it.
   ct.Delete();
   return true;
}

static void DeleteListItems(SPList list, SPContentTypeId id)
{
   SPListItemCollection items = list.Items;
   int count = items.Count;  //Count will change
   for (int i = count -1; i >= 0; i--) 
   {
      SPListItem item = items[i];
      if (item.ContentType.Id == id)
         item.Delete();
   }
   list.Update();
}

См. также

Справочные материалы

SPContentType класс

Элементы SPContentType

Пространство имен Microsoft.SharePoint

Delete

Hidden

Другие ресурсы

Content Type Deletion