Pregunta

He definido un tipo de contenido 'Enlaces relacionados' y establecer heredes = "falso" y agregado línea para eliminar el campo 'Título' listos para usar, ya que no quiero que se muestre en la vista o nueva/editar// Formularios de visualización, consulte (Opción 1) en CAML a continuación.

<?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>

Esto elimina el campo 'Título' del tipo de contenido, pero cuando intento asociar el tipo de contenido con una lista, no muestra el campo 'LinkCategory' en los formularios View o Editar/Editar/Mostrar/mostrar. ¿Por que es esto entonces?

<?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>

Como trabajo, he establecido heredes = "verdadero" en el tipo de contenido y usé (opción 2) en el tipo de contenido CAML y eso oculta el campo 'Título', pero realmente me gustaría entender qué está pasando aquí y cuál es el mejor enfoque para tomar. ¡Gracias por adelantado!

PD: Esta publicación tiene una pregunta similar: SharePoint 2010: removefieldref y hereSs = "verdadero"

PSS: Cuando navego a través de SP Manager 2010 después de implementar usando la Opción 1, obtengo lo siguiente:

  • Campo de 'categoría de enlace' creado correctamente
  • Tipo de contenido de 'enlaces relacionados' creado correctamente con el campo 'Categoría de enlaces'
  • Lista de 'enlaces relacionados' creada con 'enlaces relacionados' Tipo de contenido asociado
  • Sin embargo, la lista de 'enlaces relacionados' no tiene referencia al campo 'Categoría de enlaces'.
¿Fue útil?

Solución

Ok, así que estaba en camino por el camino del jardín ...

El problema de por qué el campo de 'categoría de enlace' no se estaba creando en la lista de 'enlaces relacionados' no se relacionó con la configuración de heredes = "falso", fue porque no lo había definido en el esquema de la lista a pesar de que lo había definido. en el tipo de contenido. Como se menciona aquí:

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

Cuando SharePoint Foundation crea una instancia de lista, incluye solo aquellas columnas que se declaran en el esquema de tipo base de la lista o en el esquema de la lista. Si hace referencia a un tipo de contenido del sitio en el esquema de la lista, y ese tipo de contenido hace referencia a columnas del sitio que no están incluidas en el esquema de tipo base de la lista o en el esquema de la lista, esas columnas no están incluidas. Debe declarar esas columnas en el esquema de la lista para SharePoint Foundation para incluirlas en la lista.

Y aquí:

http://stefan-stanev-s-s-sharepoint-log.blogspot.com/2010/03/contenttypeBinding-vs-contentTypereF.html

Una cosa fea al respecto es que especifica un tipo de contenido del sitio que se adjuntará a la lista en función de la definición de esa lista, pero el marco no provoca los campos en el tipo de contenido si faltan en la lista, por lo que debe agregar Manualmente, todos los campos del tipo de contenido en el elemento Fields del archivo de esquema de la lista. Esto es en realidad lo que llamé el problema de redefinición de los campos ...

Entonces, el elemento de campo duplicado a continuación desde la definición de tipo de contenido al esquema de la lista:

    <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>

Puedo confirmar que usar heredes = "falso" y <RemoveFieldRef ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}" /> elimina el campo de título.

Aquí hay otro buen enlace sobre heredar = "falso" para aquellos que se topan con esta publicación.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top