レポートにハイパーリンクを追加したい。あるレポートに設定されたハイパーリンクは、別のサブレポートに移動するはずです。これが可能かどうか教えてください。もしそうなら、これを達成するための段階的なアプローチを提供していただけますか?
3 に答える
まず、はい、それは実行可能です。
次に、ステップバイステップの手順を示します。
- リンク元の要素を右クリックして、[ハイパーリンク]を選択します。
- ハイパーリンクターゲットを選択:空白
- ハイパーリンクタイプを選択します:参照
- [参照]タブに、(パラメーターを使用して)サブレポートを呼び出すためのURLを入力します。たとえば、私のレポートの1つで、次のようにReportControllerサーブレットを呼び出してサブレポートを作成します。 =&parmName_3 = END_TIME_MS&parmValue_3 = "
- [ツールチップ]タブにツールチップを追加します(オプション)。ツールチップで変数とパラメータの値を参照できることに注意してください。
これを行う方法は他にもあることに注意してください。レポートの生成にJavaとサーブレットを使用していない場合は、メソッドが異なる場合があります。詳細な手順については、ireportのドキュメントを参照することをお勧めします。
私は自分の問題の解決策を得ました。あるサブレポートから別のサブレポートに値を渡す必要があるという要件はありませんでした。そのため、リンクが必要なテキストフィールドを右クリックするだけです。ハイパーリンクターゲットを「Self」に設定し、ハイパーリンクタイプを「LocalPage」に設定し、ハイパーリンクページ式で次の式を設定します。Integer.valueOf(i)、ここでiはページ番号(私の場合はシート番号)です。ハイパーリンクで私を連れて行きたい。必要に応じて、次のプロパティを使用することもできます:Integer.valueOf($ V {REPORT_COUNT})。
返信ありがとうございます。
レポート内のナビゲーションについては、ハイパーリンクとアンカーを使用して実装しました
以下は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>
レポートとサブレポート間を移動するためにこれを実装しました。これがお役に立てば幸いです。