jasper reports - jasperreports - Mostrar "Página X de Y" usando un solo campo de texto
jasperreports server (5)
Me gustaría crear un campo de texto que contenga la Page X of Y
, sin dividirlo en dos partes, según la solución común. Mi campo de texto contiene "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
con "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}"
evaluationTime=auto
.
Digamos que tengo un informe con 10 páginas. Tres son la banda de título , seis son la banda de detalle y una es la banda de resumen . Mis resultados muestran "Page 0 of 10"
para la Banda de título , recuentos correctos para la Banda de detalle , luego "Page 0 of 10"
para la Banda de resumen .
¿Cómo garantiza que la variable se calcule en todas partes, no solo en la Banda de detalles ?
Jaspersoft Studio, 6+
Para Jaspersoft Studio v6, o si el primer número de la página está duplicado, pruebe esta solución , que usa $V{MASTER_CURRENT_PAGE}
y $V{MASTER_TOTAL_PAGE}
con un tiempo de evaluación de Master
.
Jaspersoft Studio
Para otras versiones de Jaspersoft Studio, pruebe los pasos descritos en las subsecciones subsiguientes.
Crear variable
Crea una variable de la siguiente manera:
- Crea una variable llamada
V_CURRENT_PAGE_NUMBER
- Seleccione la variable para abrir sus propiedades (ilustrado abajo)
- Establecer expresión a:
1
- Establezca la expresión de valor inicial en:
$V{PAGE_NUMBER}
- Si el número de la página muestra
0
, use$V{PAGE_NUMBER} + 1
. - Si el número de página siempre muestra
1 of Y
, establezca Expresión en$V{PAGE_NUMBER}
lugar de la expresión de valor inicial, y deje la expresión de valor inicial en$V{PAGE_NUMBER}
.
- Si el número de la página muestra
- Establecer tipo de reinicio en:
Page
Estos ajustes se ilustran en la siguiente figura:
Establecer la expresión en 1
evita que su valor sea null
. Es decir, si el pie de página muestra Página nula de 4 , probablemente significa que la Expresión no se ha establecido.
Se crea la variable.
Añadir pie de página
Agregue una banda de pie de página de la siguiente manera:
- Seleccione el informe en el panel de esquema
- Verifique el resumen con el encabezado y el pie de página para asegurarse de que el pie de página aparece en la página de resumen.
- Añadir una banda de pie de página .
Se añade el pie de página.
Crear campo de texto
Crea un campo de texto de la siguiente manera:
- Arrastre y suelte un solo campo de texto en la banda de pie de página .
- Seleccione el campo de texto.
- Establezca la expresión en:
msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
- Establecer el tiempo de evaluación en:
Auto
Estos ajustes se ilustran en la siguiente figura:
Se crea el campo de texto único.
Vista previa del informe
Para un informe con tres páginas más una página de resumen, la vista previa del informe muestra:
La página de resumen muestra:
Vea la publicación del blog de Robert Ensinger sobre este tema para más detalles.
Con respecto al número de la página actual, $V{PAGE_NUMBER}
evaluationTime=now
y $V{PAGE_NUMBER}
es su respuesta.
Desafortunadamente, no creo que puedas lograr lo que quieres porque hay un error en PAGE_COUNT cuando Split Permitido está PAGE_COUNT para la banda de Detalle. De lo contrario, "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
evaluationTime=now
y "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}"
probablemente funcionará.
El enfoque común, como usted mencionó, utiliza dos campos de texto separados:
Número de página actual
$V{PAGE_NUMBER}
con EvaluationTime: ahora
Número total de páginas
$V{PAGE_NUMBER}
con EvaluationTime: informe
Esto debería ayudar, utilizando la evaluación hora como informe.
<textField>
<reportElement x="497" y="0" width="32" height="12" forecolor="#7E8083"
uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
</textElement>
<textFieldExpression>
<![CDATA["Page " + $V{PAGE_NUMBER} + " of"]]>
</textFieldExpression>
</textField>
<textField evaluationTime="Report">
<reportElement x="529" y="0" width="7" height="12" forecolor="#7E8083"
uuid="ef663cfd-4058-40bb-a6d9-de7f9a8164be"/> --update your elements here
<textElement textAlignment="Right" verticalAlignment="Middle">
<font fontName="SansSerif" size="7" pdfFontName="OpenSans-Regular.ttf"/>
</textElement>
<textFieldExpression>
<![CDATA[$V{PAGE_NUMBER}]]>
</textFieldExpression>
</textField>
Intenté este enfoque , pero terminé con números de página incorrectos: {1/7, 1/7 , 2/7, 3/7, 4/7, 5/7, 6/7}.
Para JasperReports 6+, use las variables del sistema MASTER_CURRENT_PAGE
y MASTER_TOTAL_PAGES
y recuerde configurar el tiempo de evaluación del campo de texto en Master
:
<textField evaluationTime="Master">
<textElement textAlignment="Right"/>
<textFieldExpression><![CDATA[msg("Page {0} of {1}", $V{MASTER_CURRENT_PAGE}, $V{MASTER_TOTAL_PAGES})]]></textFieldExpression>
</textField>
Consulte: http://jasperreports.sourceforge.net/sample.reference/book/index.html