3

我想在我的报告中添加超链接。一个报告中设置的超链接应该将我带到另一个子报告。你能告诉我这是否可行。如果可以,请提供一步一步的方法来实现这一目标?

4

3 回答 3

2

首先,是的,这是可行的。

其次,这是您的分步说明:

  1. 右键单击要链接的元素,然后选择超链接。
  2. 选择超链接目标:空白
  3. 选择超链接类型:参考
  4. 在参考选项卡中,键入 URL 以调用子报告(带参数)。例如,在我的一份报告中,我调用 ReportController servlet 来创建子报告,如下所示: "./ReportController?reportName=ValidationDetailsChart&reportTitle=Validation%20Details&nParms=3&parmName_1=ORD_NUMBER&parmValue_1=" + $F{ORDER_NUMBER} + "&parmName_2=START_TIME_MS&parmValue_2 =&parmName_3=END_TIME_MS&parmValue_3="
  5. 在“工具提示”选项卡中添加工具提示(可选)。请注意,您可以在工具提示中引用变量和参数值。

请注意,还有其他方法可以做到这一点,如果您不使用 java 和 servlet 生成报告,您的方法可能会有所不同。我建议查看 ireport 文档以获取更多说明。

于 2012-06-11T17:29:13.467 回答
1

我得到了我的问题的解决方案。我没有要求必须将任何值从一个子报表传递到另一个子报表。所以我只需右键单击我想要链接的文本字段。我将超链接目标设置为“Self”,将超链接类型设置为“LocalPage”,并在超链接页面表达式中设置以下表达式:Integer.valueOf(i),其中 i 是页码(在我的情况下是工作表编号),其中我想要超链接带我。如果您愿意,还可以使用以下属性:Integer.valueOf($V{REPORT_COUNT})。

感谢大家的回复。

于 2012-06-19T10:35:46.080 回答
0

对于我使用超链接和锚点实现的报告中的导航

下面是带有 hyperlinkAnchorExpression 的文本字段,这将是链接。注意 hyperlinkType="LocalAnchor"

<textField isStretchWithOverflow="true" hyperlinkType="LocalAnchor">
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="80" y="0" width="80" height="20" forecolor="#3286C7" uuid="9a8313d2-21f3-4cd2-8e40-f9cddeb3cdaf"/>
            <box topPadding="3" leftPadding="3">
                <topPen lineWidth="0.2"/>
                <leftPen lineWidth="0.2"/>
                <bottomPen lineWidth="0.2"/>
                <rightPen lineWidth="0.2"/>
            </box>
            <textElement>
                <font isUnderline="true"/>
            </textElement>
            <textFieldExpression><![CDATA[$F{cAddress}.getId()]]></textFieldExpression>
            <hyperlinkAnchorExpression><![CDATA[$F{cAddress}.getId().toString()]]></hyperlinkAnchorExpression>
        </textField>

下面是anchornameexpression,当单击超链接并且值与报告中任何位置的hyperlinkAnchorExpression 值匹配时,将调用它。

</textField>
        <textField isStretchWithOverflow="true">
            <reportElement positionType="Float" stretchType="RelativeToTallestObject" x="80" y="0" width="80" height="20" uuid="9a8313d2-21f3-4cd2-8e40-f9cddeb3cdaf"/>
            <box topPadding="3" leftPadding="3">
                <topPen lineWidth="0.2"/>
                <leftPen lineWidth="0.2"/>
                <bottomPen lineWidth="0.2"/>
                <rightPen lineWidth="0.2"/>
            </box>
            <textFieldExpression><![CDATA[$F{id}]]></textFieldExpression>
            <anchorNameExpression><![CDATA[$F{id}.toString()]]></anchorNameExpression>
        </textField>

我已经实现了这一点来浏览报表和子报表。希望这会有所帮助。

于 2019-01-12T11:46:06.327 回答