SharePoint 2010: Añadir un campo de tipo Publishing Image a una lista desde Visual Studio 2010 (C#)

 
En este artículo voy a explicar cómo añadir un campo de tipo
Publishing Image a una lista de SharePoint 2010.
 
He de indicar que es necesario que el Sitio sea de Publicación o que tengamos
activada la característica de Publicación en el Sitio.
 
Bueno, pongámonos en situación. Supongamos que tenemos una lista
que queremos que contenga el enlace a una imagen, como por ejemplo, una lista que
contenga los datos de productos y la foto correspondiente. Podríamos utilizar
un campo de texto o un campo de tipo URL para almacenar la ruta de la imagen.





Pero, se complica mucho tener que insertar los registros, ya que se debe conocer
esa ruta o buscarla para después insertarla. Sería más sencillo
utilizar un navegador de archivos con el que, visualmente, acceder hasta la imagen
deseada y, esto es precisamente lo que voy a explicar.
 
Lo primero de todo es añadir una referencia a la librería
Microsoft.SharePoint.Publishing
en nuestro proyecto de Visual
Studio
 
1: using Microsoft.SharePoint.Publishing;

 

Una vez añadida la referencia, pasemos a obtener la lista, para ello, primero
obtendremos acceso al sitio en el que se encuentra la lista. Una posible solución
sería:

1: SPWeb oWeb = SPContext.Current.Web;

 

Ahora que tenemos instanciado nuestro sitio, ya podemos obtener acceso a la lista:

1: SPList oList = web.Lists.TryGetList(
            "MyList");

 

Y posteriormente añadiremos el campo imagen, para lo que necesitamos hacer
lo siguiente.

   1:  ImageField field =
new
ImageField(Web.Fields, «Image»,
«My Image Field»
);

2: field.StaticName = "MyImage";
3: field.Title = "MyImage";
4: field.RichText = true;
5: field.RichTextMode = SPRichTextMode.FullHtml;
6:  
7: oList.Fields.Add(field);
 
 

Por último, agregamos este campo a la vista por defecto (DefaultView) de
la lista

1: SPView view = oList.DefaultView;
2: view.ViewFields.Add("MyImage");
3: view.Update();

 

NOTA: No nos olvidemos de liberar las instancias que hemos utilizado

 

Una vez seguidos estos pasos y ejecutado el código, la lista ya estaría
preparada para que, en la ventana de edición-creación de un elemento,
se pueda abrir un popup que nos permita navegar por la estructura de directorios
de nuestro sitio para seleccionar la imagen.

 

El código completo quedaría de la siguiente manera.

1: //Instanciar el sitio
2: SPWeb oWeb = SPContext.Current.Web;
3:     
4: //Instanciar la lista 
5: SPList oList = web.Lists.TryGetList(
            "MyList");   
6:     
7: //Comprobamos que exista la lista
        
8: if (oList != null)   
9: {  
10:     //Crear el campo de tipo imagen
        
11:     ImageField field = new ImageField(Web.Fields, "MyImage", "My Image Field");  
12:     field.StaticName = "MyImage"  
13:     field.Title = "MyImage";  
14:     field.RichText = true;  
15:     field.RichTextMode = SPRichTextMode.FullHtml;  
16:     
17:     //Añadir el campo a
            la lista 
18:     oList.Fields.Add(field);  19:     
19:     //Añadir el campo a
            la vista por defecto 
20:     SPView view = oList.DefaultView;  
21:     view.ViewFields.Add("MyImage");  
22:     view.Update();  
23:  }  
24:     
25:  web.Dispose();  
26:  oList = null;

 

Y el resultado final sería el siguiente: