WSS 3.0 & MOSS: Como eliminar los enlaces en campos de lookup!

Como se suele decir, nunca te acostarás sin aprender algo nuevo…y este dicho tan popular, en el caso de SharePoint encaja a la perfección. Esta semana, entre otras peticiones que nos han hecho en un proyecto de SharePoint, ha habido una que me ha dado algún que otro quebradero de cabeza: como eliminar los enlaces en campos de lookup cuando estamos visualizando un ítem de lista.

El problema o necesidad

Como sabéis, SharePoint permite, entre otras muchas cosas, almacenar información de lo más variopinta…pero siempre en un modo no relacional, aunque se puede simular un escenario de almacenamiento de información vinculada utilizando los campos de lookup que permiten añadir en una lista información vinculada procedente de otra:

image image

En este caso, los campos de lookup definidos en la lista están dados por Cliente y Producto, y lo que sucede es que cuando usamos campos de lookup en listas de SharePoint, estos se renderizan en modo display en la forma de enlaces que apuntan a la lista origen de dónde toman su valor. Esto ocurre tanto cuando mostramos el listado de elementos de la lista, como cuando visualizamos un ítem concreto…la cuestión es, ¿cómo podemos quitar estos enlaces en la página de visualización de un ítem? ¿se puede hacer? Como siempre, y tras un rato de pruebas, la respuesta es que sí.

La solución

Para poder cumplir con este requerimiento, lo que tenemos que hacer es abrir nuestro sitio de SharePoint con SharePoint Designer 2007 (SD 2007) y buscar el formulario de visualización de la lista en cuestión (el DisPlay form):

image

Nos vamos a la vista de código del formulario y después de placeholder principal, añadimos el siguiente código JavaScript:

<!–Eliminar enlaces campos de lookup – CIIN 30/02/2009–> 

<script language=”javascript” type=”text/javascript”>  

_spBodyOnLoadFunctionNames.push(“RemoveLookupLinks”);

function RemoveLookupLinks()  

 

var oP = document.getElementsByTagName(‘a’);//the collection of <a> tags  

for(var i=0;i<oP.length;i++)  

                        {      

                        if(oP[i].attributes[“href”].value.indexOf(“RootFolder=*”)!= -1)

                                                 {                                                                                            

                                              var linkvalue = oP[i].innerHTML

                                               if(oP[i].parentNode.innerHTML.indexOf(‘FieldName=”Cliente”‘)!=-1)  

                                                                       {      

                                                                       oP[i].parentNode.innerHTML = linkvalue

                                                                       }         

                                               }                   

                         

}

</script>

<!–Eliminar enlaces campos de lookup – CIIN 30/02/2009–>  

Básicamente lo que estamos haciendo con el código anterior es:

  • Añadir la función RemoveLookupLinks a la pila de funciones JavaScript que carga SharePoint mediante la llamada a _spBodyOnLoadFuncionNames.push().
  • En la función RemoveLookupLinks():
    • Buscamos todos aquellos elementos que sean de tipo <a, y que por lo tanto definan un hipervínculo.
    • Nos recorremos los elementos de tipo <a y nos fijamos simplemente en aquellos que contienen RootFolder=* y que se corresponden con campos de Lookup.
    • Cogemos el HTML almacenado, y lo utilizamos para reemplazar todo el HTML contenido en el nodo padre, de manera que reemplazamos el valor del campo de lookup con hipervínculo por ese valor, pero sin hipervínculo.

Si guardamos y refrescamos el formulario de visualización veremos que el código JavaScript ha cumplido con su cometido a la perfección (en este caso, hemos eliminado uno de los enlaces):

image 

Y hasta aquí llega este pequeño tip sobre los campos de lookup de SharePoint. Espero que el post os haya resultado interesante.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “WSS 3.0 & MOSS: Como eliminar los enlaces en campos de lookup!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *