miércoles, 25 de marzo de 2009

Vínculos con parámetros en Sharepoint Designer (XSLT)

Objetivo:
Explicar de forma sencilla como crear vínculos o botones que se generen con parámetros en Sharepoint Designer, usando XSLT
Para posteriormente recogerlo el la pagina vinculada.

Ingredientes:
Un vínculo Anchor o un Botón
Una variable XSL de un datasource o un Parámetro (Parameter Binding)

Receta:
Esta es la forma facil de hacer un vinculo con parametro en sharepoint designer usando un DataView con el datasource configurado

<a href="EditForm.aspx?ID={@ID}"><img border="0" alt="Edit" src="/_layouts/images/edititem.gif" /></a>

De esta forma lo podemos poner en un botón con la diferencia que obtenemos el valor del parameterbing

<input type="button" value="Insertar nuevo Subindice" name="btnNuevoSubindice">
<xsl:attribute name="onclick">javascript: document.location.href='../Subindices/NewForm.aspx?IDPPTA=<xsl:value-of select="$IDPPTA" /></xsl:attribute>'
</input>


No olvidar poner el parametro en la seccion <parameterbindings> del webpart:
<ParameterBinding Name="IDPPTA" Location="QueryString(ID)" DefaultValue="120"/>

Truco: En este caso lo obtenemos de la queryString y le pongo un valor por defecto para que recupere datos en preview y poder diseñar comdodamente usando el Sharepoint designer.

De esta forma me he creado un autonumerador de elementos teniendo en cuenta que el datasource esta filtrado por parametro

<input type="button" value="Insertar nuevo Subindice" name="btnInsertarNuevo2">
<xsl:attribute name="onclick">javascript: document.location.href='../Subindices/NewForm.aspx?IDPPTA=<xsl:value-of select="dsQueryResponse/Rows/Row[1]/@Propuesta" />&NEWSUBNUM=<xsl:value-of select="ddwrt:Max(/dsQueryResponse/Rows/Row/@Cod_subindice)+1</a>" />'</xsl:attribute> </input>

Obtenemos el mismo efecto usando un vínculo
<a alt="Nuevo"><xsl:attribute name="href">../Subindices/NewForm.aspx?IDPPTA=<xsl:value-of select="dsQueryResponse/Rows/Row[1]/@Propuesta" />&NEWSUBNUM=<xsl:value-of select="ddwrt:Max(/dsQueryResponse/Rows/Row/@Cod_subindice)+1</a>" /></xsl:attribute>Añadir un Nuevo registro autonumerado</a>


Nota: "'" es la comilla ya que en XSLT no se pueden poner directamente
Espero os resulte de utilidad

Otra forma: Se puede hacer en vez de pasar el parametro por GET, se pase por post si creamos un formulario oculto con campos hidden, asi no son visibles los parametros, pero hay que recogerlo del form en vez del la QueryString

http://www.robertomarcos.com/

3 comentarios:

  1. buenas tardes. Me encuentro con un problema: tengo un elemento web editor de contenido con varias imágenes. una de ellas tiene un vínculo y necesito que lleve el nombre de máquina y el nombre de usuario del modo ?computername. Es esto posible? Gracias de antemano

    ResponderEliminar
  2. Hola, ojalá puedan ayudarme, en una pagina de la intranet Sharepoint, necesito mostrar el username de sharepoint y colocarlo en un enlace para mandar a un sitio externo en php.

    Ojala me ayuden, gracias,

    ResponderEliminar
  3. Hola espero me puedan ayudar, estoy aprendiendo, bueno lo que necesito hacer en un dropdown list de un html web part donde listo paginas del sitepages y que al momento de elegir una opcion me envie a la pagina, de antemano muchas gracias

    ResponderEliminar