【问题标题】:How to show number of rows on page and the total numbers of rows in report如何显示页面上的行数和报告中的总行数
【发布时间】:2017-05-18 02:27:48
【问题描述】:

JasperReport 的报告中,我一直在使用表格显示数据

在页脚我想显示每页的记录总数

Page 1 Showing 25 records out of 65
Page 2 Showing 50 records out of 65
Page 3 Showing 15 records out of 65

我使用列数来显示每页的记录数,但对于报告中的总记录我应该使用什么

Page 1 Showing 25 records out of 25
Page 2 Showing 50 records out of 50
Page 3 Showing 15 records out of 65

我应该使用哪个变量或添加任何条件?

【问题讨论】:

    标签: jasper-reports ireport


    【解决方案1】:

    您可以借助内置变量$V{REPORT_COUNT} 和自定义变量轻松解决此任务。

    工作样本

    jrxml 文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="no_of_rows_on_page" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="da1c0873-1b22-4592-93a1-c9ffbdcec490">
        <queryString>
            <![CDATA[SELECT name FROM PRODUCT]]>
        </queryString>
        <field name="name" class="java.lang.String"/>
        <variable name="rowsOnPage" class="java.lang.Integer" resetType="Page">
            <variableExpression><![CDATA[$V{rowsOnPage} + 1]]></variableExpression>
            <initialValueExpression><![CDATA[0]]></initialValueExpression>
        </variable>
        <detail>
            <band height="20" splitType="Stretch">
                <textField>
                    <reportElement uuid="dc686db4-cb13-46c2-8420-e9ba198116e3" x="0" y="0" width="185" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$F{name}]]></textFieldExpression>
                </textField>
            </band>
        </detail>
        <pageFooter>
            <band height="20">
                <textField>
                    <reportElement uuid="0940bce6-118f-47bc-81f6-ae03ca55ddcb" x="205" y="0" width="112" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA["Showing " + $V{rowsOnPage} + " records out of "]]></textFieldExpression>
                </textField>
                <textField evaluationTime="Report">
                    <reportElement uuid="b5f1da29-7ac8-40a9-889e-e306a0cd26fe" x="317" y="0" width="60" height="20"/>
                    <box leftPadding="2"/>
                    <textElement/>
                    <textFieldExpression><![CDATA[$V{REPORT_COUNT}]]></textFieldExpression>
                </textField>
                <textField>
                    <reportElement uuid="fb9ca24d-844e-4921-8a79-85c2ec2d2888" x="159" y="0" width="46" height="20"/>
                    <textElement/>
                    <textFieldExpression><![CDATA["Page " + $V{PAGE_NUMBER}]]></textFieldExpression>
                </textField>
            </band>
        </pageFooter>
    </jasperReport>
    

    结果

    iReport中通过预览模式生成的输出结果

    工作原理

    我在 Page Footer 波段添加了 3 个 textFields

    • 第一个用于显示当前页码。表达式为:"Page " + $V{PAGE_NUMBER}评估时间现在

    • 第二个用于显示当前页面上的行数。表达式为:`"Showing " + $V{rowsOnPage} + " records out of "' 并且 Evaluation TimeNow

    • 第三个用于显示整个报告中的总行数。表达式为:$V{REPORT_COUNT}评估时间报告

    如您所见,我添加了自定义变量 rowsOnPage 用于计算页面上的行数。

    变量定义:

    • 表达式$V{rowsOnPage} + 1
    • 类型整数
    • 初始值0
    • 重置类型页面

    查看详情:
    Variables
    Built-in variables in JasperReports Ultimate Guide

    【讨论】:

      【解决方案2】:

      变量“$V{REPORT_COUNT}”可以解决你的问题,在评估时使用它“report”。

      【讨论】:

        【解决方案3】:

        如果您使用的是 Ireport 设计工具,那么您可以通过从调色板中放置 Y 页 X 来非常轻松地显示总数。

        Ireport 5.5 在窗口菜单下有调色板。

        【讨论】:

        • 我在问我应该如何显示总共 65 65 65 而不是 25 50 65
        猜你喜欢
        • 2014-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-17
        • 1970-01-01
        • 2011-07-25
        • 2017-11-29
        • 1970-01-01
        相关资源
        最近更新 更多