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
Espero que os sirva de ayuda.