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


Обновление дочерних типов контента

Дата последнего изменения: 1 декабря 2010 г.

Применимо к: SharePoint Foundation 2010

В этой статье
Обновление дочерних типов контента посредством пользовательского интерфейса
Обновление дочерних типов контента посредством объектной модели
Вопросы, возникающие при обновлении дочерних типов контента

Доступно на сайте SharePoint Online

Каждый тип контента содержит ссылку на тип контента сайта, на котором он основывается. Это позволяет Microsoft SharePoint Foundation 2010распространять изменения, внесенные в родительский тип контента, на все дочерние типы контента сайтов и списков.

При внесении изменений в тип контента сайта можно распространить эти изменения на все его дочерние типы контента как посредством пользовательского интерфейса, так и с помощью объектной модели. Когда операция распространения копирует внесенные в типы контента сайтов или списков, основанные на данном типе контента сайта, она не перезаписывает тип контента целиком. Переопределяемая область контента зависит от того, выполнялись ли изменения и операция распространения с помощью пользовательского интерфейса или с помощью объектной модели.

Обновление дочерних типов контента посредством пользовательского интерфейса

Когда тип контента сайта редактируется в пользовательском интерфейсе и изменения вносятся на странице параметров типа контента, во время операции распространения переопределяются все параметры на этой странице. Таким образом, степень детализации изменений, которые можно распространить, определяется параметрами, сгруппированными на каждой странице. Каждый раз, когда при внесении какого-либо изменения на странице параметров типа контента, во время операции распространения переопределяются все параметры на этой странице.

Далее следует сводный перечень параметров, которые содержатся на каждой странице параметров типа контента.

  • Дополнительные параметры   На этой странице содержатся следующие параметры:

    • URL-адрес шаблона документа

    • Фактический файл шаблона документов, если был выбран существующий шаблон на веб-сайте или загружен собственный файл шаблона

    • Атрибут только для чтения

  • Параметры нового столбца   Эта страница управляет добавлением нового столбца в тип контента сайта.

  • Параметры столбца   На этой странице содержатся следующие параметры:

    • Обязательный

    • Скрытый

    • Удаление столбца из типа контента сайта

Обновление дочерних типов контента посредством объектной модели

Использование модели объектов обеспечивает большую степень детализации в операциях распространения. После внесения изменений в тип контента сайта с помощью модели объектов код фактически вносит эти изменения в представление типа контента сайта в памяти. Только при вызове метода UpdateSharePoint Foundation фиксирует эти изменения в базе данных сайта.

Пример: добавление столбца в тип контента

В следующем примере кода создается столбец сайта, затем этот столбец добавляется в коллекцию полей, принадлежащую настраиваемому типу контента (в этом примере типу "Specification"), и наконец эти изменения распространяются на все типы контента, основанные на типе "Specification".

ПримечаниеПримечание

Невозможно добавлять столбцы в существующий тип контента сайта декларативно, т.е. путем обновления XML-файлов компонента.

using (SPWeb oWebsite = new SPSite("http://MyServer/sites/MySiteCollection/MyWebSite").OpenWeb())
{
    SPList oList = oWebsite.GetList("MyWebSite/Lists/MyList");
    SPFieldCollection collFields = oWebsite.Fields;

    string strNewColumn = collFields.Add("MyNewColumn", SPFieldType.Text, false);

    SPFieldLink oFieldLink = new SPFieldLink(fields[strNewColumn]);
    SPContentType oContentType = oList.ContentTypes["Specification"];
    oContentType.FieldLinks.Add(oFieldLink);

    oContentType.Update(true);
}
Using oWebsite As SPWeb = New SPSite("http://MyServer/sites/MySiteCollection/MyWebSite").OpenWeb()
    Dim oList As SPList = oWebsite.GetList("MyWebSite/Lists/MyList")
    Dim collFields As SPFieldCollection = oWebsite.Fields

    Dim strNewColumn As String = collFields.Add("MyNewColumn", SPFieldType.Text, False)

    Dim oFieldLink As New SPFieldLink(fields(strNewColumn))
    Dim oContentType As SPContentType = oList.ContentTypes("Specification")
    oContentType.FieldLinks.Add(oFieldLink)

    oContentType.Update(True)
End Using

Обновление дочерней настраиваемой информации в типах контента

Также можно распространять настраиваемые параметры со степенью детализации на уровне XML-документа с помощью объектной модели. Каждый тип контента имеет коллекцию XML-документов, которую решения сторонних поставщиков могут использовать для хранения сведений о настраиваемых параметрах. Конкретные XML-документы можно переопределить с помощью операций распространения. Помните, что SharePoint Foundation не пытается определить, используется ли XML-документ в настоящий момент и нужен ли он какому-либо процессу, прежде чем переопределить его. В рамках операции распространения также можно полностью удалить XML-документы.

Дополнительные сведения о сохранении документов XML с настраиваемыми сведениями в типах контента см. в статье Особые сведения в типах контента.

Вопросы, возникающие при обновлении дочерних типов контента

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

Каждая операция распространения распространяет только изменения, внесенные в родительский тип контента в настоящий момент. Если изменения не были распространены в момент их внесения, распространить их позднее очень непросто. В большинстве случаев придется отменить предыдущие изменения, внести их снова и распространить. Например, предположим, что из родительского типа контента был удален столбец, но это изменение не было распространено. Все последующие операции распространения не будут удалять столбец из дочернего типа контента. Чтобы удалить этот столбец из дочернего типа контента позже, придется добавить его заново в родительский тип контента, удалить его, а затем выполнить операцию распространения.

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

Попытка выполнить операцию распространения в дочернем типе контента, который помечен только для чтения, приведет к сбою, если только для родительского типа контента не будет установлен доступ для чтения/записи в той же операции распространения.

Распространение изменений может происходить частично. Если в некотором дочернем типе контента операция распространения даст сбой, SharePoint Foundation продолжит распространение изменений на все остальные дочерние типы контента. По окончании операции распространения SharePoint Foundation возвращает список ошибок.

Если дочерний тип контента задан как запечатанный, то на этом типе контента происходит сбой операции распространения.

ПримечаниеПримечание

Чтобы создать тип контента сайта или управлять им на сайте, необходимо иметь для этого сайта права веб-разработчика. При отсутствии таких прав доступа к дочернему сайту произойдет сбой операции распространения на типы контента, имеющиеся на этом дочернем сайте.

Дополнительные сведения о запечатанных типах контента и типах контента только для чтения см. в статье Управление изменениями типов контента.

См. также

Концепции

Введение в типы контента

Типы контента сайта и списка

Область определения типа контента

Создание типов контента

Управление доступом к типам контента

Удаление типов контента