martes, 22 de noviembre de 2011

Adicionar links dinámicos a columnas en listas SharePoint



1- Crear una columna tipo Hyperlink


2- Abrir la lista desde SharePoint Designer



3- Crear vista



4-  Editar vista en modo avanzado


5- Habilitar la vista codigo avanzado 


6- Codigo fuente del web part


7- El codigo generado de la vista es

<xsl:template name="FieldRef_Hyperlink_URL_body.enlace" ddwrt:dvt_mode="body" match="FieldRef[(@Format='Hyperlink') and @Name='enlace']" mode="URL_body" ddwrt:ghost="hide">
  <xsl:param name="thisNode" select="."/>
  <xsl:variable name="url" select="$thisNode/@*[name()=current()/@Name]" />
  <xsl:variable name="desc" select="$thisNode/@*[name()=concat(current()/@Name, '.desc')]" />
  <xsl:choose>
    <xsl:when test="$url=''">
      <xsl:if test="$desc=''">
        <xsl:value-of select="$desc"/>
      </xsl:if>
    </xsl:when>
    <xsl:otherwise>
      <a href="{$url}" >
        <xsl:choose>
          <xsl:when test="$desc=''">
            <xsl:value-of select="$url"/>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="$desc"/>
          </xsl:otherwise>
        </xsl:choose>
      </a>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>



8- El codigo que coloca a la columna enlace una url concatenada con un valor que se encuentra en las columnas de la lista es el siguiente:

Reemplace el codigo generado que se visualiza en (7) con el siguiente:

<xsl:template name="FieldRef_Hyperlink_URL_body.enlace" ddwrt:dvt_mode="body" match="FieldRef[(@Format='Hyperlink') and @Name='enlace']" mode="URL_body" ddwrt:ghost="">
  <xsl:param name="thisNode" select="."/>
  <xsl:variable name="url" select="$thisNode/@*[name()=current()/@Name]" />
  <xsl:variable name="desc" select="$thisNode/@*[name()=concat(current()/@Name, '.desc')]" />
  <a href="{concat('http://server/Reuniones/SitePages/ToPDF.aspx?IDReunion=',$thisNode/@ID)}" >   
       <xsl:value-of select="concat('Convertir a',' PDF')"/>
  </a>
</xsl:template>



9- Ver los resultados en el browser





10-  De esta manera podemos generar url con parametros dinamicos, sin necesidad de escribir javascript adicional, simplemente usando el xslt del que disponemos y el resultado es el siguiente:










No hay comentarios:

Publicar un comentario