Метод 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();
}
См. также
Справочные материалы
Пространство имен Microsoft.SharePoint