如何显示页面上的行数和报告中的总行数

时间:2014-09-25 07:10:37

标签: jasper-reports ireport

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

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

3 个答案:

答案 0 :(得分:0)

借助内置变量 $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 2

Last page

如何运作

我在页脚频段添加了3个 textFields

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

  • 第二个用于显示当前页面上的行数。表达式为:`“显示”+ $ V {r​​owsOnPage} +“记录”评估时间 现在

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

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

变量定义:

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

详细了解:
Variables
Built-in variables in JasperReports Ultimate Guide

答案 1 :(得分:0)

变量&#34; $ V {REPORT_COUNT}&#34;可以解决您的问题,在评估时使用它&#34;报告&#34;。

答案 2 :(得分:-1)

如果你正在使用Ireport设计工具,那么你可以通过从调色板中放置Y的Page X来非常容易地显示总数。

Ireport 5.5在Window菜单下有调色板。