Set border of a jasper subreport having a title and a detail band

妖精的绣舞 提交于 2019-12-05 15:59:55
benz

If you are using jasper report plugin, you can open the JRXML file and say something like

 <box>
        <topPen lineWidth="1.0"/>
        <leftPen lineWidth="1.0"/>
        <bottomPen lineWidth="1.0"/>
        <rightPen lineWidth="1.0"/>
    </box>

Jasper reports come with an excellent designer called 'IReport Designer'. You can use concept of frames in IReport designer and put your sub-report inside the frame and then apply the border properties on the frame itself. You can also find BorderAroundTable useful. I would definitely recommend these links as well.

How to add border to a subreport

Frame Around Two Subreports

Border In Jasper Report

Let us know if this solution works for you.

If it can work for subreport having summary and page header, then it can help your case as well.

Editing and adding master report and subreport code having border

Master Report Source Code

<?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="testborder" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <detail>
        <band height="421" splitType="Stretch">
            <subreport>
                <reportElement x="25" y="148" width="200" height="100"/>
                <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.JREmptyDataSource()]]></dataSourceExpression>
                <subreportExpression><![CDATA["C:\\jaspersamples\\testborder_subreport1.jasper"]]></subreportExpression>
            </subreport>
            <frame>
                <reportElement x="45" y="119" width="390" height="176"/>
                <box>
<topPen lineWidth="2.0" lineStyle="Solid"/>
<leftPen lineWidth="2.0" lineStyle="Solid"/>

                    <bottomPen lineWidth="2.0" lineStyle="Solid"/>
                    <rightPen lineWidth="2.0" lineStyle="Solid"/>
                </box>
            </frame>
        </band>
    </detail>
</jasperReport>

Subreport source code

<?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="testborder_subreport1" language="groovy" pageWidth="802" pageHeight="555" orientation="Landscape" whenNoDataType="AllSectionsNoDetail" columnWidth="802" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0">
    <property name="ireport.zoom" value="1.0"/>
    <property name="ireport.x" value="0"/>
    <property name="ireport.y" value="0"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <pageHeader>
        <band height="29" splitType="Stretch">
            <staticText>
                <reportElement x="317" y="5" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[HELLO TEST]]></text>
            </staticText>
        </band>
    </pageHeader>
    <summary>
        <band height="29" splitType="Stretch">
            <staticText>
                <reportElement x="317" y="0" width="100" height="20"/>
                <textElement/>
                <text><![CDATA[i am testing BORDER]]></text>
            </staticText>
        </band>
    </summary>
</jasperReport>

The output is somewhat like this

You may enclose your subreport into a frame using IReport or Jaspersoft Studio. The steps of Jaspersoft Studio:

  1. Select main report and open Outline View
  2. Find subreport element and right click it.
  3. Select Enclose into Frame.
  4. Open Frame element's Properties.
  5. Go to Borders Tab and select the border choice that you want.
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!