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:
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):
Nos vamos a la vista de código del formulario y después de placeholder principal, añadimos el siguiente código BLOCKED SCRIPT
|
<!--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:
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):
Y hasta aquí llega este pequeño tip sobre los campos de lookup de SharePoint. Espero que el post os haya resultado interesante.
Comparte este post: