2011-02-23 16 views
7

He creado un tipo de contenido personalizado que hereda de OOTB SharePoint Picture tipo de contenido. Las únicas personalizaciones que he hecho es agregar un campo URL simple y eliminar dos de los campos en el tipo base. Vea a continuación:SharePoint 2010: RemoveFieldRef e Inherits = "TRUE"

<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
    <!-- Parent ContentType: Picture (0x010102) --> 
    <ContentType ID="0x0101020027f16ab27e6e45a6848c25c47aaa7053" 
       Name="Custom Picture" 
       Description="" 
       Group="Custom" 
       Inherits="TRUE" 
       Version="0"> 
     <FieldRefs> 
      <RemoveFieldRef ID="{b66e9b50-a28e-469b-b1a0-af0e45486874}" Name="Keywords" /> 
      <RemoveFieldRef ID="{a5d2f824-bc53-422e-87fd-765939d863a5}" Name="ImageCreateDate" /> 
      <FieldRef ID="{c29e077d-f466-4d8e-8bbe-72b66c5f205c}" Name="URL" DisplayName="URL" Required="FALSE" /> 
     </FieldRefs> 
    </ContentType> 
</Elements> 

Si creo una biblioteca de imágenes basado en mi tipo de contenido personalizado, el campo "URL" que agregó aparece en las nuevas formas/editar, sin embargo, los dos campos que he tratado de eliminar son también se muestra, es decir, se están ignorando los RemoveFieldRef. Si miro el tipo de contenido en "Configuración del sitio -> Galería de tipos de contenido", estos dos campos todavía se enumeran allí.

Configuración Inherits = "false" en mi tipo de contenido personalizado (see MSDN definition) elimina con éxito sólo estos dos campos de la "Configuración del sitio -> Tipo de Contenido Galería" página, sin embargo, a continuación, ninguno de la los campos base se muestran en los formularios nuevos/editar, solo mi campo "URL" personalizado.

¿Qué puedo hacer para asegurar que todos los campos de la base de "Imagen" tipo de contenido se muestran en las nuevas formas/edición de mi biblioteca de imágenes, excepto los dos campos que he eliminado específicamente?

+0

probar dos cosas: 1. Extracción 'Inherits' o 2. Configuración Hereda = False y simplemente hacer referencia a los campos que desee desde el padre a su contenido tipo, por ejemplo '

+2

La eliminación de la herencia es más una solución que una solución para el problema RemoveFieldRef. Del mismo modo, me di cuenta de que puedo dejar Inherits = "TRUE" y simplemente establecer los campos no deseados en Hidden = "TRUE". Sin embargo, si estuviera usando un tipo de contenido con docenas de campos, esto podría no ser tan tentador. Así que aún buscando ... –

Respuesta

1

creo que la naturaleza de este problema que es la comprensión de cómo funciona el contenido tipo de herencia.

De MSDN (http://msdn.microsoft.com/en-us/library/aa544268.aspx)

Si Inherits es TRUE, el tipo de contenido hijo hereda todos los campos que se encuentran en la matriz ,> incluidos los campos que los usuarios han agregado.

Si Inherits es FALSE o está ausente y el tipo de contenido principal es un tipo integrado, el tipo de contenido secundario hereda solo los campos que estaban en el tipo de contenido principal cuando se instaló> SharePoint Foundation. El tipo de contenido secundario no tiene ningún campo que> los usuarios hayan agregado al tipo de contenido principal.

Si Inherits es falsa o ausente y el tipo de contenido primario fue aprovisionado por una> solución de espacio aislado, el niño no hereda todos los campos de la matriz.

creo que la frase clave anterior es "Si Inherits es TRUE, el tipo de contenido hijo hereda todos los campos que se encuentran en la matriz que incluye campos que los usuarios han añadido."

Esto significa que para lograr lo que se proponía hacer, no habrá establecido los heredos como verdaderos y deberá incluir elementos de FieldRef para todos los campos que desee usar en su tipo de contenido.

Usted no hacen referencia/No incluya el código de cómo se añadió el tipo de contenido a la instancia de la lista. Asegúrese de que esto se haya actualizado para admitir la eliminación o la configuración de inherits en falso.

Estos sitios de soporte lo que se describe aquí.

Cuestiones relacionadas