Sucede que algunos clientes en ocasiones buscan tener cosas que desde el punto de vista técnico tendemos a pensar que no tienen sentido, sin embargo para nuestro cliente si y si así es el caso, para nosotros también.
Problema
Solicitaron visualizar en los elementos de una lista el nombre y correo electrónico de un campo de tipo persona y claro, lograrlo sin programación y para ayer.
Solución
Convertir a DataView WebPart la página de AllItems.aspx de la lista en cuestión para agregar una columna nueva y con XSLT buscar en el contenido del campo de tipo Persona el correo electrónico para mostrarlo. Sucede que un campo “Field” de tipo Persona almacena en su interior contenido HTML para mostrar un hipervínculo que apunta al perfil o My Site del usuario y dentro de este contenido se encuentra el correo electrónico. A continuacion un ejemplo del contenido del campo Persona.
<nobr><span><A HREF=”/Global/temp/_layouts/userdisp.aspx?ID=26″>haaron.gonzalez</A><img border=”0″ height=”1″ width=”3″ src=”/_layouts/images/blank.gif”/><a href=’javascript:’ onclick=’IMNImageOnClick();return false;’ class=’ms-imnlink’><img name=’imnmark’ title=” border=’0′ height=’12’ width=’12’ src=’/_layouts/images/blank.gif’ alt=’No presence information’ sip=‘haaron.gonzalez@splatin.com’ id=’imn_10,type=smtp’/></a></span></nobr>;
He marcado en verde los datos que me interesa obtener. Lo que haremos es utilizar XSLT para buscar dentro del HTML el atributo “sip” el cual retorna el correo electrónico que deseamos.
El resultado es:
<xsl:value-of select= ‘substring-before(substring-after(@Persona, concat(“sip=”,$dvt_apos)), $dvt_apos)’ disable-output-escaping=”no”/>
Veamos entonces como lograr lo que nos pide el cliente
1. Cargamos SharePoint Designer 2007 y abrimos el sitio donde se encuentra la lista en cuestión.
2. Convertimos la lista en DataView WebPart dando clic derecho sobre la lista y seleccionando la opción Convert XSLT Data View
3. Agregamos una nueva columna en el DataView WebPart, nos posicionamos justo despues del campo Persona y damos clic derecho para cargar el menu contextual y elegir la opcion.
4. Dentro del HTML de la pagina pegamos el código XSLT que busca dentro del campo Persona el correo electrónico. También no olvides agregar el título de la columna como “Correo electrónico”
Y listo damos check in al archive AllItems.aspx y probamos nuestra solución.
Suerte!
Originalmente publicado en msmvps.com