2012-04-09 10 views
5

Ich habe drei Textfeld in Header erstellt. Ich habe Parameter in alle textField Elemente eingefügt. Wenn ich keinen der drei Parameter von drei textField Elementen anrufe. Es wird 2 textField Elemente anzeigen. Das Problem besteht nun darin, dass zwischen den Textfeldern Platz ist.Wie entferne ich mehr Platz zwischen Textfeldern in JasperReports?

So entfernen Sie den Speicherplatz?

Dies ist mein Code:

<textField isBlankWhenNull="true"> 
    <reportElement x="0" y="18" width="555" height="35" isRemoveLineWhenBlank="true"/> 
    <textElement textAlignment="Center"> 
     <font size="12"/> 
    </textElement> 
    <textFieldExpression><![CDATA[$P{daterangefrom} && $P{daterangeto} ? "From (" + $P{daterangefrom} + " - " + $P{daterangeto} + ")" 
: $P{weeks} && $P{monthy} && $P{yrs} ? "For week " + $P{weeks} +" "+ $P{monthy} +" "+ $P{yrs} 
: $P{monthy} && $P{yrs} ? "For monthly " +$P{monthy} +" "+ $P{yrs} 
: $P{quarter} && $P{yrs} ? "For Quarter " + $P{quarter} +" "+$P{yrs} 
: $P{yrs} ? "For " + $P{yrs} 
: null]]> 
    </textFieldExpression> 
</textField> 

Diese Mine Ergebnis ist:

enter image description here

+0

Sie können ein 'textField' verwenden. Welche Art von Feldplatzierung verwenden Sie (vertikal oder horizontal)? –

+0

im verwenden vertical.yesterday, benutze ich alle in einem Textfeld kombinieren und ich legte doppelte Linie. wenn einer von drei nicht zeigt. Es wird 2 Textfeld angezeigt. aber es gibt Platz im Textfeld. Wie entferne ich den Platz, damit der Bericht strukturierter angezeigt werden kann? –

Antwort

14

können Sie 3 textField Elemente mit isRemoveLineWhenBlank auf true Wert Eigenschaft verwenden.

Die Probe (jrxml-Datei):

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport .. topMargin="0" bottomMargin="0"> 
    <parameter name="parameter1" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="parameter2" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="parameter3" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="102" splitType="Stretch"> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="9" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter1} == null ? null : "Parameter1: " + $P{parameter1}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="29" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter2} == null ? null : "Parameter2: " + $P{parameter2}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="163" y="49" width="100" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{parameter3} == null ? null : "Parameter3: " + $P{parameter3}]]></textFieldExpression> 
      </textField> 
      <staticText> 
       <reportElement x="163" y="73" width="100" height="20"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <text><![CDATA[Static text]]></text> 
      </staticText> 
      <line> 
       <reportElement x="63" y="6" width="447" height="1"/> 
      </line> 
      <line> 
       <reportElement x="73" y="96" width="447" height="1"/> 
      </line> 
     </band> 
    </title> 
</jasperReport> 

Das Report-Design in iReport: Report's design in iReport

Für die parameter1 = null, parameter2 = null, parameter1 = value3 das Ergebnis wird sein: The result in iReport (preview mode)

UPDATE

Für das Problem zu lösen, das Element oben war die textField im Falle bewegt sich verstecken Sie die Frame Behälter verwenden können.Sie sollten 2 Rahmen (einen pro Spalte) hinzufügen und 2 textField Elemente (2 Zeilen) in jeden Rahmen einfügen.

Die Probe (jrxml Datei):

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport .. topMargin="0" bottomMargin="0"> 
    <parameter name="par1" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par2" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par3" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <parameter name="par4" class="java.lang.String"> 
     <defaultValueExpression><![CDATA[null]]></defaultValueExpression> 
    </parameter> 
    <title> 
     <band height="80" splitType="Stretch"> 
      <line> 
       <reportElement x="10" y="6" width="520" height="1"/> 
      </line> 
      <line> 
       <reportElement x="10" y="72" width="520" height="1"/> 
      </line> 
      <frame> 
       <reportElement x="329" y="10" width="172" height="59"/> 
       <frame> 
        <reportElement x="13" y="3" width="60" height="54"/> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
        </textField> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
        </textField> 
       </frame> 
       <frame> 
        <reportElement x="73" y="3" width="70" height="54"/> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="0" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
        </textField> 
        <textField isBlankWhenNull="true"> 
         <reportElement x="1" y="20" width="52" height="20" isRemoveLineWhenBlank="true"/> 
         <box> 
          <topPen lineWidth="1.0"/> 
          <leftPen lineWidth="1.0"/> 
          <bottomPen lineWidth="1.0"/> 
          <rightPen lineWidth="1.0"/> 
         </box> 
         <textElement/> 
         <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
        </textField> 
       </frame> 
      </frame> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par3} == null ? null : "P3: " + $P{par3}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="10" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par1} == null ? null : "P1: " + $P{par1}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="64" y="10" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par2} == null ? null : "P2: " + $P{par2}]]></textFieldExpression> 
      </textField> 
      <textField isBlankWhenNull="true"> 
       <reportElement x="64" y="30" width="52" height="20" isRemoveLineWhenBlank="true"/> 
       <box> 
        <topPen lineWidth="1.0"/> 
        <leftPen lineWidth="1.0"/> 
        <bottomPen lineWidth="1.0"/> 
        <rightPen lineWidth="1.0"/> 
       </box> 
       <textElement/> 
       <textFieldExpression><![CDATA[$P{par4} == null ? null : "P4: " + $P{par4}]]></textFieldExpression> 
      </textField> 
     </band> 
    </title> 
</jasperReport> 

Report Design in iReport: The design in iReport. Two cases

Für die PAR1 = null, PAR2 = 2, PAR3 = 3, PAR4 = 4 die Ergebnis wird sein: The result in iReport preview. Two cases

Sie können die Ergebnisse vergleichen - linke Seite ist ohne Verwendunggetan 0 und die rechte Seite mit frame Elemente.

+0

@Amin Hinzugefügt nur die Design-Screenshot des Berichts –

+0

Danke @Alex k. aber ich habe noch eine Frage, wie wäre es, wenn ich insgesamt 4 TextField setzen würde. Ich lege 2 Textfeld in Zeile 1 und 2 Textfeld in Zeile 2 ein. Wie entferne ich das Leerzeichen, wenn ich ein Textfeld in Zeile 1 lösche? –

+1

Zum Beispiel haben Sie 'txtFieldName1' und' txtFieldValue1' in der ersten Zeile und 'txtFieldName2' und' txtFieldValue2' in der zweiten Zeile (Zeile). Wenn der Ausdruck "txtFieldName1" -Element NULL ist, möchten Sie beide Elemente ('txtFieldName1' und' txtFieldValue1') ausblenden und in diesem Fall nur eine Zeile anzeigen (mit 'txtFieldName2' und' txtFieldValue2' Elementen) oder möchten Sie um 'txtFieldName2' und' txtFieldValue1' in der ersten Reihe und nur 'txtFieldValue2' in der zweiten Reihe zu zeigen? Kannst du mir die Regel erklären? –

1

Es gibt viele Möglichkeiten, Probleme wie diese zu beheben, aber es sei denn, Sie bieten detaillierte Informationen über Ihren Bericht . Ich kann nicht wirklich gute Vorschläge machen.

Aber hier sind einige Tipps könnten Ihnen helfen.

Verwenden Sie einen TextField und einen Parameter.

Anstatt Ihre Kopfzeile in jrxml mit separaten TextField zu verfassen, können Sie sie in Java zuerst verfassen und dann als Parameter speichern. Auf diese Weise können Sie Java Ihnen mit der ganzen Logik über das Verfassen der Zeichenfolge helfen.

Verwenden Sie eine TextField und drei Parameter

Sie können einfach Ausdrücke wie dies in der

TextField schreiben, so können Sie die Lücke verhindern, die durch leere TextField verursacht. Oder verwenden Sie den Begriff shorthand condition wie folgt.

$P{FirstName} + (${MiddleName}.isEmpty() ? "" : " " + ${MiddleName}) + " " + ${LastName} 
+0

Können Sie Ihren Code in Ihre Frage aktualisieren? Kommentar ist kein guter Ort, um Code zu lesen. Und bitte ** erkläre dein Problem **, wie das Ergebnis aussieht, wie dein Bericht aussieht, aber wie er jetzt aussieht. –

+0

Ich habe meinen Code und ich ändern Bericht zu Javascript, das ist meine Bilder, http://i.stack.imgur.com/guooK.jpg –

Verwandte Themen