如何隐藏y的第x页时,我的碧玉报告只有一页(How to hide the page x of y

2019-06-25 06:56发布

我使用碧玉报告4.5.0,我产生reports.My的要求是,如果我的报告只有一页,然后它不应该显示页面1 0F我1.How可以做this.To显示y的第x页我使用的代码下面的线。

  <textField>
                <reportElement x="395" y="121" width="20" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="350" y="121" width="45" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA["PAGE"]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="415" y="121" width="25" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA["OF"]]></textFieldExpression>
            </textField>
            <textField evaluationTime="Report">
                <reportElement x="440" y="121" width="19" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>

这是新修改的代码。

<variable name="NPAGES" class="java.lang.Integer" calculation="Highest">
        <variableExpression><![CDATA[$V{PAGE_NUMBER}]]></variableExpression>
        <initialValueExpression><![CDATA[$V{PAGE_NUMBER}]]></initialValueExpression>
    </variable>

<textField>
                <reportElement x="395" y="121" width="20" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? $V{PAGE_NUMBER} : ""]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="350" y="121" width="45" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? "PAGE" : ""]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="415" y="121" width="25" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? "OF" : ""]]></textFieldExpression>
            </textField>
            <textField>
                <reportElement x="440" y="121" width="19" height="20"/>
                <textElement/>
                <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? $V{NPAGES} : ""]]></textFieldExpression>
            </textField>

Answer 1:

定义被设置为在报告的总页数的变量NPAGES:

<variable name="NPAGES" class="java.lang.Integer" calculation="Highest">
    <variableExpression><![CDATA[$V{PAGE_NUMBER}]]></variableExpression>
    <initialValueExpression><![CDATA[$V{PAGE_NUMBER}]]></initialValueExpression>
</variable>

现在,使用该变量为条件,以确定是否要显示页码:

        <textField>
            <reportElement x="395" y="121" width="20" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? $V{PAGE_NUMBER} : ""]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="350" y="121" width="45" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? "PAGE" : ""]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="415" y="121" width="25" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? "OF" : ""]]></textFieldExpression>
        </textField>
        <textField>
            <reportElement x="440" y="121" width="19" height="20"/>
            <textElement/>
            <textFieldExpression><![CDATA[($V{NPAGES} > 1) ? $V{NPAGES} : ""]]></textFieldExpression>
        </textField>

我在我的报告之一尝试这样做,它的工作。



Answer 2:

没有,有没有直接的方法来实现这一目标。 在发动机加注页1的那一刻,它不知道是否有将是一个2页延迟评估时间不足以解决这个问题。

最简单的类似的解决方法就是躲“Y的页面X” 1.本网页上不能满足您的要求,规定......但有些人喜欢它不够好。

最好的比较简单的办法就是用报表。 创建刚刚执行当前的报表查询主报表。 创建一个名为布尔参数$P{subreport_has_more_than_one_page} (或者,呃,用更简洁的名称)。 希望你可以用简单的逻辑一样知道你的报告将多个页面,如果返回超过25行。 这不一定是可能的...但在现实世界的情况下,一个非常大的比例,确实有可能。 如果你的页面依赖于不可预知的包皮过长的文字,这可能是艰难的。

假设你能确定的价值$P{subreport_has_more_than_one_page} ,那么这个参数传递给子报表。 该报表仅仅是现有的报告。 该值的武装是微不足道的一个打印加入表达时为“Y的页面X”的第一页上。



Answer 3:

我们可以做到这一点请按照以下步骤。

第1步:创建变量,以便它将存储当前页码。

<variable name="V_CURRENT_PAGE_NUMBER" class="java.lang.Integer" resetType="Page">
    <variableExpression><![CDATA[1]]></variableExpression>
    <initialValueExpression><![CDATA[$V{PAGE_NUMBER}+1]]></initialValueExpression>
</variable>

第二步:添加文本字段,evaluationTime应该是自动

值将被

$ V {PAGE_NUMBER}> 1 MSG( “页{0}的{1}”,$ V {V_CURRENT_PAGE_NUMBER},$ V {PAGE_NUMBER}):?”“

让PAGE_NUMBER值,如果大于1个,则total_report_page否则空的打印页CURRENT_PAGE。

例如:第1页3

<textField evaluationTime="Auto">
            <reportElement positionType="Float" x="475" y="37" width="74" height="15"/>
            <textElement/>
            <textFieldExpression><![CDATA[$V{PAGE_NUMBER}>1?

MSG( “页{0} {1}的”,$ V {V_CURRENT_PAGE_NUMBER},$ V {PAGE_NUMBER}):”“]]>



文章来源: How to hide the page x of y when my jasper report has only one page