Как обновить значение по умолчанию для поля «Заголовок» в типе контента «Документ» или типах, унаследованных от него - PullRequest
1 голос
/ 29 декабря 2008

Поле «Заголовок» запечатано. Любые попытки обновить значение по умолчанию сбрасывают значение обратно в «null»


Спасибо за ваше время.

Ваша идея сделать «RemoveFieldRef и FieldRef прямо сейчас» будет такой же, как установка свойств «Required» и «Default Value» через интерфейс для «Document» или унаследованных типов контента, хотя ваша идея поможет мы создаем пользовательские типы контента.

Установка «Заголовок» на обязательный параметр работает не во всех ситуациях. Одна из таких ситуаций - когда вы пытаетесь добавить элемент через «Новый» (который в моем случае открывает шаблон на основе Office 2007).

Так как поле «Заголовок» как обязательное поле доставляло мне много времени, я хотел попробовать маршрут «DefaultValue», но даже этот, похоже, не работает. Любая помощь?

Ответы [ 5 ]

3 голосов
/ 29 декабря 2008

Вы можете сразу удалить RemoveFieldRef и FieldRef. Фактически, тип содержимого документа делает это сам, чтобы заголовок не требовался. В файле по умолчанию ctypeswss.xml для типа содержимого документа не задан закрытый атрибут.

Проверьте [12] \ TEMPLATE \ FEATURES \ CTypes \ ctypeswss.xml и прокрутите вниз до строки 32, чтобы увидеть, как это делает тип содержимого.

.b

(Отказ от ответственности: у меня высокая температура, поэтому, если я не вижу смысла, вините леденцы на палочке, бегающие по моей кухне)

2 голосов
/ 03 января 2009

Сделайте это с помощью Event Reciever, который вы зарегистрировали в Типе контента для добавленных элементов и Обновленных элементов событий. Таким образом, каждый раз, когда добавляется новый элемент, ему может быть присвоен заголовок по умолчанию. Вы можете зарегистрировать Event Recievers в типе контента CAML следующим образом:

  <ContentType ...>
    <FieldRefs>
      <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" Name="Title" DisplayName="My Title" Required="FALSE" ShowInDisplayForm="FALSE" ShowInNewForm="FALSE" ShowInEditForm="FALSE" ShowInListSettings="FALSE"/>
    </FieldRefs>
    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/events">
        <Receivers>
          <Receiver>
            <Name>TitleCreator</Name>
            <Type>ItemAdded</Type>
            <Assembly>...</Assembly>
            <Class>TitleCreatorItemEventReceiver</Class>
          </Receiver>
          <Receiver>
            <Name>TitleCreator</Name>
            <Type>ItemUpdated</Type>
            <SequenceNumber>1</SequenceNumber>
            <Assembly>...</Assembly>
            <Class>TitleCreatorItemEventReceiver</Class>
          </Receiver>
        </Receivers>
      </XmlDocument>
    </XmlDocuments>
  </ContentType>
1 голос
/ 10 января 2009

Вот что мы нашли для «Заголовка»:

  • Поле «Заголовок» не запечатано в fieldwss.xml (12 \ TEMPLATE \ FEATURES \ поля)
  • Он не запечатан под типом контента «Документ» в ctypeswss.xml (12 \ TEMPLATE \ FEATURES \ ctypes)
  • Он запечатан в определении библиотеки документов в schema.xml. (12 \ TEMPLATE \ FEATURES \ DocumentLibrary \ DocLib)

Установка значения по умолчанию через OM приведет к сбросу значения на NULL для типа содержимого .Update (). Это потому, что «Заголовок» запечатан в определении DL.

Открыт запрос на обслуживание с MS. Жду результатов !!!

0 голосов
/ 30 декабря 2008

Этот подход работает для всех полей, кроме скрытого поля "Заголовок", которое кажется действительно особенным

0 голосов
/ 30 декабря 2008

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

.b

...