sharepoint sharepoint-2007 content-type

Diferencia entre FieldLinks y Field en Sharepoint



sharepoint-2007 content-type (1)

Estoy en el medio de intentar copiar un tipo de contenido personalizado de una web a otra. Busqué en Google y encontré algunos ejemplos que usan FieldLinks y Fields. Estoy perdido en cuanto a cuál usar, ya que cuando obtengo FieldLinks de mi web de origen, obtengo 3 campos; mientras recuperaba desde Fields solo me devolvieron 2 campos ... falta el campo personalizado. Estoy bastante seguro de que he agregado los campos en el nivel adecuado ya que lo hice a través de la interfaz. Pero cuando lo recuperas usando código ... los números simplemente no suman.

Entonces, además de ese extraño problema, quiero saber cuál es la diferencia entre FieldLinks y Fields, y cuando los trato en Tipos de contenido (programáticamente) ¿cuál debo usar?

Gracias.


Los SPFields son campos en sí mismos, mientras que SPFieldLinks son referencias a los campos. Esta es una buena lectura que explicará las cosas en detalle . En la práctica general, es más seguro usar SPFieldLinks cuando se trabaja en la definición del tipo de contenido real . Sin embargo, voy a dar un resumen rápido aquí.

Las listas y los sitios web contienen los campos reales con datos de campo. Un tipo de contenido, por otro lado, solo contiene la Referencia de campo, que simplemente apunta al campo correspondiente en la lista o web. Esto se vuelve un poco confuso, porque los tipos de contenido tienen un SPFieldLinkCollection y un SPFieldCollection.

El SPFieldLinkCollection se usa en la definición real del tipo de contenido, y es lo que usted querría usar en su situación de copiar un tipo de contenido de una web a otra. SPFieldLinks corresponde a los elementos reales en el esquema XML para un tipo de contenido.

Comparativamente, cuando llamas a SPFieldCollection de un tipo de contenido y recuperas un Campo de él, lo que realmente está sucediendo es que el tipo de contenido está verificando la referencia de campo correspondiente y luego buscando en la lista / web para obtener el campo real. Básicamente, piense en SPFieldCollection de la misma manera que funciona una búsqueda: no tiene valor sin el valor de búsqueda y la fuente de búsqueda.