En un anterior artículo expliqué cómo añadir un campo de tipo Publishing Image a una lista desde Visual Studio 2010. Hoy me explicaré cómo añadir un campo de texto enriquecido a una lista.

El escenario es el siguiente:

Supongamos que tenemos una lista que se crea desde código, de la que se alimenta un WebPart para mostrar información de los registros de esa lista pero que, además, se desea que en alguno de esos campos de la lista se pueda almacenar texto enriquecido para poder añadir enlaces, listas de html, maquetar el texto, etc.

 

Solución:

  • En primer lugar obtemenos el sitio en el que se encuentra la lista
SPWeb oWeb = SPContext.Current.Web;

 
  • Seguidamente tenemos que acceder a la lista en la que queremos añadir el campo.

SPList oList = web.Lists.TryGetList("NombreDeLaLista");

 
  • Seguidamente, debemos crear el campo.
HtmlField field = new HtmlField(Web.Fields, "HTML", "Nombre a mostrar");   

field.StaticName = "MyRichTextField";   

field.Title = "MyRichTextField";   

field.RichText = true;   

field.RichTextMode = SPRichTextMode.FullHtml;

 
  • Por último añadiremos el campo a la lista y, lo ponemos visible en la DefaultView
// Añadir el campo a la lista

oList.Fields.Add(field);

SPView view = oList.DefaultView;

 

// Añadir el campo a la vista por defecto de la lista

view.ViewFields.Add("MyRichTextField");

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 podamos escribir texto enriquecido en el campo que acabamos de crear.

 

El código completo quedaría así:

// Obtener el sitio donde se encuentra la lista

SPWeb web = SPContext.Current.Web;

 

// Obtener la lista

SPList oList = web.Lists.TryGetList("NombreDeLaLista");

 

// Si existe la lista

if (oList != null)

{

    // Crear el campo

    HtmlField field = new HtmlField(Web.Fields, "HTML", "Nombre a mostrar");   

    field.StaticName = "MyRichTextField";   

    field.Title = "MyRichTextField";   

    field.RichText = true;   

    field.RichTextMode = SPRichTextMode.FullHtml;

    

    // Añadir el campo a la lista

    oList.Fields.Add(field);

    

    // Añadir el campo a la vista por defecto de la lista

    SPView view = oList.DefaultView;

    view.ViewFields.Add("MyRichTextField");

    view.Update();

}

 

web.Dispose();

oList = null;

 

 

El resultado final sería el siguiente

RichTextField1RichTextField2

 

Espero que os sirva de ayuda.