web-dev-qa-db-ja.com

列ヘッダー、フッター、詳細セクションの両方の周囲に境界線を描画するにはどうすればよいですか?

JasperReports + iReportで作成されたレポートのすべての詳細+列ヘッダーをカプセル化する境界線が必要です。しかし、列ヘッダー、詳細、および列フッターの両方に含まれる四角形またはフレームを描画しようとすると、要素の位置が無効であるというエラーが表示されます。

1つのオプションは画像を使用することだと思います(CSSなしの古き良きHTML時代のように...)が、フィールドがオーバーフローした場合、または誰かがセクションの高さや幅を変更した場合、画像はPITAになります変更する必要があります...

他の選択肢はありますか?

ありがとう。

11
Pascal Robert

これを行うには、フレームを各バンドに配置し、バンドを完全に埋めるようにサイズを設定します。次に、フレームに境界線を設定して、3つのバンドすべての周囲に境界線を複製します。これにより、ヘッダーの上部、左側、右側に境界線が表示されます。フッターには、下、左、右があります。ディテールバンドには左右にのみボーダーがあります。以下のサンプルコードを参照してください。

<columnHeader>
    <band height="61" splitType="Stretch">
        <frame>
            <reportElement x="0" y="0" width="555" height="61"/>
            <box>
                <topPen lineWidth="2.0" lineStyle="Solid"/>
                <leftPen lineWidth="2.0" lineStyle="Solid"/>
                <rightPen lineWidth="2.0" lineStyle="Solid"/>
            </box>
        </frame>
    </band>
</columnHeader>
<detail>
    <band height="125" splitType="Stretch">
        <frame>
            <reportElement x="0" y="0" width="555" height="125"/>
            <box>
                <leftPen lineWidth="2.0" lineStyle="Solid"/>
                <rightPen lineWidth="2.0" lineStyle="Solid"/>
            </box>
        </frame>
    </band>
</detail>
<columnFooter>
    <band height="45" splitType="Stretch">
        <frame>
            <reportElement x="0" y="0" width="555" height="45"/>
            <box>
                <leftPen lineWidth="2.0" lineStyle="Solid"/>
                <bottomPen lineWidth="2.0" lineStyle="Solid"/>
                <rightPen lineWidth="2.0" lineStyle="Solid"/>
            </box>
        </frame>
    </band>
</columnFooter>

結果は次のようになります。 Screenshot from iReport

10
GenericJon
  1. ジャスパーレポートをクリックします。
  2. 基本的な要素に移動します。
  3. 長方形を選択します。
0

フレームまたは長方形で背景バンドを使用するのが最も効果的であるように見えますが、最初のページと後続のページのヘッダー要素が異なる場合、フレーム/長方形のサイズ設定は少し注意が必要です。

これを回避する1つの方法は、任意のタイトル、ヘッダー、およびフッターのバンドにフレーム/長方形を追加することです。これは不透明/白で、背面に送信されます。これにより、背景画像が不明瞭になります。

これは、詳細バンドに対してのみ表示されることを意味します。そのため、ヘッダーとフッターフレームには、必要に応じて下部/上部の境界線が必要になる場合があります。

(サイドボーダーだけのディテールバンドでフレームを使用する場合の問題は、繰り返されるディテールバンドが各ページを埋めないことがあるため、うまく機能しないことがわかりました。そのため、サイドのボーダーにギャップが残ります)

0
Steve Parker

その目的のために長方形を描く背景バンドを使用できます。

0
lkdg