SharePoint 2010: Cuidado con los IDs de campos y al referenciarlos en tipos de contenido!

No soy un gran fan de utilizar la aproximación declarativa a la hora de definir “artefactos” típicos de SharePoint como pueden ser columnas o tipos de contenido de SharePoint 2010, pero como se suele decir hay que saber de todo y a veces esta aproximación puede resultar ventajosa frente a trabajar exclusivamente en el mundo de los objetos. El caso es que la aproximación declarativa implica que tienes que tener cierto cuidado cuando defines los atributos que conforman un cierto artefacto, y de ahí el título de este post, ya que por ejemplo no es lo mismo especificar el ID de una columna de sitio de SharePoint 2010 de la forma ID=“ 59491385-A088-4CEA-AEC9-B6BE51276C0F” que hacerlo como ID=“{59491385-A088-4CEA-AEC9-B6BE51276C0F}”…la sutil diferencia viene dada por las llaves de inicio y cierre del ID ya que si no las indicamos provocamos que a la hora de usar esas columnas en la definición de un tipo de contenido éste no se dé por enterado y no las incorpore, amén de problemas en re-despliegue de los artefactos y otras situaciones curios…moraleja: define y referencia los atributos como los espera SharePoint:

  • Definición de una columna de sitio:
   1: <?xml version="1.0" encoding="utf-8"?>

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   3:     <Field ID="{59491385-A088-4CEA-AEC9-B6BE51276C0F}"

   4:            Name="SubmittedBy"

   5:            DisplayName="$Resources:SubmittedBy"

   6:            Type="User" List="UserInfo" ShowField="NameWithPicture"

   7:            UserSelectionScope="0" UserSelectionMode="0"

   8:            Required="TRUE" Group="Custom Columns"></Field>

   9: </Elements>

  • Referencia a la columna de sitio en la definición de un tipo de contenido:
   1: <?xml version="1.0" encoding="utf-8"?>

   2: <Elements xmlns="http://schemas.microsoft.com/sharepoint/">

   3:   <!-- Parent ContentType: Item (0x01) -->

   4:   <ContentType ID="0x0100c660015c779343cd8a24648d752b6778"

   5:                Name="$Resources:WeeklyStatusReportCT"

   6:                Group="Custom Content Types"

   7:                Description="$Resources:WeeklyStatusReportCTDesc"

   8:                Inherits="TRUE"

   9:                Version="0">

  10:     <FieldRefs>

  11:         <FieldRef ID="{FA564E0F-0C70-4AB9-B863-0177E6DDD247}" Name="Title" Required="TRUE" ShowInNewForm="TRUE" ShowInEditForm="TRUE"/>

  12:         <FieldRef ID="{59491385-A088-4CEA-AEC9-B6BE51276C0F}" Name="SubmittedBy" Required="TRUE" ShowInNewForm="TRUE" ShowInEditForm="TRUE"/>

  13:     </FieldRefs>

  14:   </ContentType>

  15: </Elements>