Поле не отображается в списке с типами содержимого Inherits = "False" - PullRequest
2 голосов
/ 16 января 2012

Я определил тип содержимого «связанные ссылки» и установил Inherits = «False» и добавил строку для удаления поля «title» из коробки, так как я не хочу, чтобы оно отображалось в представлении или новом/ edit / display формы, см. (ОПЦИЯ 1) в CAML ниже.

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">

    <!-- ===== Fields ===== -->
    <!-- Link Category -->
    <Field DisplayName="Link Category"
           Name="LinkCategory"
           ID="{654EAC00-342B-4176-9D91-613AD724F684}"
           Group="Custom"
           Overwrite="True"
           Type="Lookup"
           ShowField="Title"
           List="Lists/LinkCategoryList"
           WebId="~sitecollection" />

    <!-- ===== Content Type ===== -->
    <!-- 
    Related Links
     - Parent ContentType: Item (0x01)
    -->
    <ContentType Name="Related Links"
                 ID="0x0100c11a1db14e564574bc49a2aa9bf325d3"
                 Group="Custom"
                 Description=""
                 Inherits="False"
                 Version="0">
        <FieldRefs>
            <!-- Title (OPTION 1) -->
            <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" />
            <!-- (OPTION 2)
            <FieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" 
                      Hidden="TRUE" Required="FALSE" DisplayName="_hidden" />
            -->
            <!-- Link Category -->
            <FieldRef DisplayName="Link Category"
                      Name="LinkCategory"
                      ID="{654EAC00-342B-4176-9D91-613AD724F684}"
                      Required="True" />
        </FieldRefs>
    </ContentType>

</Elements>

Это удаляет поле 'title' из типа контента, но когда я пытаюсь связать тип контента со списком, это делаетне отображать поле 'LinkCategory' в представлении или новых / редактировать / отображать формы.Почему это так?

<?xml version="1.0" encoding="utf-8"?>
<List xmlns:ows="Microsoft SharePoint"
      Title="Related Links"
      FolderCreation="FALSE"
      Direction="$Resources:Direction;"
      Url="Lists/RelatedLinksListDefinition"
      BaseType="0"
      EnableContentTypes="True"
      xmlns="http://schemas.microsoft.com/sharepoint/">
    <MetaData>
        <ContentTypes>
            <!-- Related Links -->
            <ContentTypeRef ID="0x0100c11a1db14e564574bc49a2aa9bf325d3" />
        </ContentTypes>
        <Fields>
        </Fields>
        <Views>
            <View ...etc...>
                <ViewFields>
                    <FieldRef Name="LinkCategory"></FieldRef>
                </ViewFields>
                <Query>
                    <OrderBy>
                        <FieldRef Name="ID"></FieldRef>
                    </OrderBy>
                </Query>
            </View>
        </Views>
        <Forms>
            <Form Type="DisplayForm" Url="DispForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
            <Form Type="EditForm" Url="EditForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
            <Form Type="NewForm" Url="NewForm.aspx"
                  SetupPath="pages\form.aspx" WebPartZoneID="Main" />
        </Forms>
    </MetaData>
</List>

В качестве обходного пути я установил Inherits = "True" для типа контента и использовал (ВАРИАНТ 2) в типе контента CAML, который скрывает поле 'title',но очень хотел бы понять, что здесь происходит и какой лучший подход выбрать.Заранее спасибо!

PS: у этого поста есть похожий вопрос: SharePoint 2010: RemoveFieldRef and Inherits = "TRUE"

PSS: при просмотре через SP Manager 2010 послепри развертывании с использованием ВАРИАНТА 1 я получаю следующее:

  • Поле «Категория ссылки» создано правильно
  • Тип содержимого «Связанные ссылки» создан правильно с полем «Категория ссылки»
  • Список «Связанные ссылки» создан с типом контента «Связанные ссылки»
  • Однако в списке «Связанные ссылки» нет ссылки на поле «Категория ссылок».

1 Ответ

1 голос
/ 17 января 2012

Хорошо, так что я шел по дорожке в саду ...

Проблема, по которой поле «Категория ссылки» не создавалась в списке «Связанные ссылки», не была связана с настройкой Inherits = "Ложь ", потому что я не определил его в схеме списка, хотя я определил его в типе контента.Как упомянуто здесь:

http://msdn.microsoft.com/en-us/library/aa543576.aspx

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

И здесь:

http://stefan -stanev-sharepoint-blog.blogspot.com/2010/03/contenttypebinding-vs-contenttyperef.html

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

Итак, дублированный элемент Field ниже из определения типа содержимого в схему списка:

    <Fields>
        <Field DisplayName="Link Category"
               Name="LinkCategory"
               ID="{654EAC00-342B-4176-9D91-613AD724F684}"
               Group="Custom"
               Overwrite="True"
               Type="Lookup"
               ShowField="Title"
               List="Lists/LinkCategoryList"
               WedId="~sitecollection" />
    </Fields>

Я могу подтвердить, чтоиспользование Inherits = "False" & <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" /> действительно удаляет поле заголовка.

Вот еще одна хорошая ссылка об Inherits = "False" для тех, кто наткнулся на этот пост.

https://sharepoint.stackexchange.com/questions/2995/mysteries-of-the-contenttype-inherits-attribute

...