> # Que son Columnas de Sitio

> Columnas de Sitio permiten definir una columna y sus metadatos para utilizarla a lo largo de todas las Listas y Librerías del Portal. Lo mismo que los Tipos de Contenido, es una forma de centralizar y reutilizar una plantilla de una columna a lo largo de todo el Portal.

> De la misma forma que los Tipos de Contenido, las Columnas de Sitio son almacenadas en una Galería en el Portal ("Acciones del sitio" -> "Configuración del sitio" -> "Columnas de sitio"), desde la que se pueden administrar sus características, agruparlas de una manera lógica, crearlas y eliminarlas.

> ### Figura 1: Galería de Columnas de Sitio

> Columnas de Sitio se pueden utilizar en cualquier tipo de Lista o Librería, y pueden ser incluidas en Tipos de Contenido. Una definición de Columna puede ser utilizada por diferentes Listas al mismo tiempo, pero no debe estar en uso para poder ser eliminada de la galería.

> El Modelo de Objetos de SharePoint permite manipular las Columnas por completo. Crearlas, eliminarlas y definir sus propiedades es posible desde código; inventariarlas también es posible, y de una forma mas completa de lo que permite la interface de SharePoint, pues ésta no permite ver propiedades marcadas como "invisible", o propiedades que son solamente para leer.

> Las clases SPField y SPFieldCollection representan una Columna de Sitio y la colección de Columnas presentes en un determinado sitio de SharePoint. Cada una de estas clases provee los métodos y propiedades necesarios para manipular Columnas de Sitio.

> El siguiente código permite enumerar todas las Columnas de Sitio presentes en el Portal, mostrando su titulo, tipo y grupo al que pertenece:

>      SPSite miSite = SPControl.GetContextSite(Context);
>      SPWeb miWeb = miSite.OpenWeb();

>      SPFieldCollection misColumnas = miWeb.Fields;
>      foreach (SPField miColumna in misColumnas)
>      {
>              Response.WriteLine(miColumna.Title + " - " +
>     			miColumna.Type.ToString() + " - " +
>     			miColumna.Group);
>      }

> Algunas líneas de código permiten crear una nueva Columna de Sitio, definir sus propiedades, y agregarla a la coleccion de Columnas:

>     SPField miNuevaColumna = new SPField(misColumnas, SPFieldType.Text.ToString(), "MiNuevaColumna");
>     miNuevaColumna.Group = "Columnas personalizadas";
>     miNuevaColumna.Description = "Prueba de Columna";
>     miNuevaColumna.DefaultValue = "Yo soy una columna";
>     misColumnas.Add(miNuevaColumna);

> Eliminar una Columna programáticamente requiere solamente una línea de código, desde que la Columna no se este usando en ninguna Lista o Libreria en el sitio (SharePoint generará una excepción si no es así):

>     misColumnas.Delete("MiNuevaColumna");

> ## Video

> Crear y mantener Columnas de Sitio desde la interface de SharePoint, utilizarlas en Listas, y manipularlas programáticamente es explicado en el siguiente video.
> Duración: 10:24 minutos