Calcular una columna de totales, con su formateo.
Ingredientes:
Una función XSLT
La llamada a la función call-template
Un DataSet cargado y la selección correcta del conjunto por XPATH
Hay que poner la función fuera de los tags xsl-template y así la podemos usar en el webpart
Calculo de totales en sharepoint con una función XLST
LA FUNCIÓN DE TOTALIZACIÓN
<xsl:template name="total">
<xsl:param name="seq"/>
<xsl:param name="total-so-far" select="0"/>
<xsl:choose>
<xsl:when test="$seq">
<xsl:call-template name="total">
<xsl:with-param name="seq"
select="$seq[position()!=1]"/>
<xsl:with-param name="total-so-far"
select="$total-so-far + translate($seq[1],',','.')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number($total-so-far, '#.##0;-#.##0')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
LA LLAMADA A LA FUNCIÓN
<xsl:call-template name="total">
<xsl:with-param name="seq" select="dsQueryResponse/Rows/Row/@Total_x0020__x0028_con_x0020_IVA" />
</xsl:call-template>
FUNCIÓN DE TOTALIZACIÓN CON FORMATEO EUROPEO (ver post de formateo numérico)
<xsl:template name="total">
<xsl:param name="seq"/>
<xsl:param name="total-so-far" select="0"/>
<xsl:choose><xsl:when test="$seq">
<xsl:call-template name="total">
<xsl:with-param name="seq"select="$seq[position()!=1]"/>
<xsl:with-param name="total-so-far"select="$total-so-far + translate($seq[1],',','.')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number($total-so-far, '##0,##;-##0,##','european')"/>
</xsl:otherwise></xsl:choose>
</xsl:template>
FUNCIÓN DE TOTALIZACIÓN DE PORCENTAJES
<xsl:template name="totalPercent">
<xsl:param name="seq"/>
<xsl:param name="total-so-far" select="0"/>
<xsl:choose>
<xsl:when test="$seq">
<xsl:call-template name="totalPercent">
<xsl:with-param name="seq" select="$seq[position()!=1]"/>
<xsl:with-param name="total-so-far" select="$total-so-far + translate($seq[1],',','.')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number($total-so-far div 100, '##0,## %;-##0,## %','european')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
NOTA: 'EUROPEAN' es un formateo numerico que he definido yo mismo en el webpart y hay que declararlo, puedes ver este post anterior http://sharepointworks.blogspot.com/2009/04/formateo-europeo-de-datos-numericos-en.html
Saludos a toda la comunidad de sharepoint
http://www.robertomarcos.com/
podrias ayudarem con esto soy nuevo en esto del sharepoint designer y necesito tener la suma de una columna y nose como agregar la funcionq ue tu colocaste a mi diseño,
ResponderEliminarLa función de totalización hay que colocarla dentro del código del data View Web Part dentro de la sección xsl:stylesheet justo en el espacio en blanco entre cualquier etiqueta xsl:template, recuerda que esto es un XSL solo estará disponible dentro de ese webpart.
ResponderEliminarLuego la puedes usar de la forma que explico en el apartado de llamada a función en vez de xsl:value-of por ejemplo dentro del TD que quieras que salgan las totalizaciones.
Hola!
ResponderEliminarPude utilizar el metodo para agregar totales.
Muchas gracias por el aporte.
Saludos!
Robertos me podria pasar tu e-mail para contactarte neecsito que me ayudes con el las sumatorias que no logro hacerlo
ResponderEliminarte paso mi correo contactame fernando_lopez@cargill.com
ResponderEliminarhola kisiera saber si la formula funciona igualmente para sharepoint 2010 y si me explicacias como sumar agrupado por titulo.
ResponderEliminargracias
Roberto, aun no logro colocar la función. SharepoinT Designer me marca un error que dice "Falta un espacio en blanco necesario" si lo coloco entre cualquier espacio en blanco entre las etiquetas xsl:template. Te agradecere mucho tu ayuda. Saludos hasta españa!!
ResponderEliminarComo mostrar solo el año en un campo
ResponderEliminar