2010-05-03 12 views
6

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.Diferencia entre FieldLinks y Field en Sharepoint

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.

Respuesta

10

SPFields son campos en sí mismos, mientras que SPFieldLinks son referencias a los campos. This is a good read that will explain things in detail. En la práctica general, es más seguro utilizar SPFieldLinks cuando se trabaja en la definición de tipo de contenido real. Sin embargo, voy a dar un resumen rápido aquí.

Las listas y las 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 utiliza 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 llama a SPFieldCollection de un tipo de contenido y recupera un campo de él, lo que realmente está sucediendo es que el tipo de contenido está comprobando la referencia de campo correspondiente y luego buscando en la lista/web para obtener el campo. 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.

+0

Gracias por la explicación. Mi situación es que cuando reviso SPFieldLinks del tipo de contenido, puedo ver 3 enlaces de campo (que es correcto); sin embargo, si reviso SPField, solo puedo ver 2 campos ... falta la columna personalizada. – BeraCim

+0

... y el tipo de contenido y las columnas se agregan a través de la interfaz, no programáticamente, si eso hace alguna diferencia. – BeraCim

+0

El documento SP2013 [aquí] (https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.spcontenttype.fieldlinks.aspx) (consulte los comentarios) refuerza su punto de vista, por lo tanto, este sigue siendo válido -hasta la fecha. – jpaugh