2010-06-17 19 views

Antwort

11

Ok! Einen Weg gefunden, dies zu erreichen!

  1. Die Zeilen werden normalerweise im Details Band gedruckt.
  2. Am Ende des Detailbereichs, wo Sie einen Seitenumbruch benötigen, fügen Sie einen Seitenumbruch hinzu.
  3. Bearbeiten Sie in den Eigenschaften von pageBreak die Eigenschaft printWhen Expression im Eigenschaftenbereich.
  4. Der Ausdruck wird

new java.lang.Boolean((int)($V{REPORT_COUNT}.intValue())%10==0)

sein, wobei 10 die Anzahl der Datensätze pro Seite.

So wird es in iReports gemacht. Das jrxml-Äquivalent für Leute, die die Datei direkt bearbeiten, ist wie folgt.

<break> 
    <reportElement x="0" y="23" width="100" height="1"> 
     <printWhenExpression><![CDATA[new java.lang.Boolean((int)($V{REPORT_COUNT}.intValue())%10==0)]]></printWhenExpression> 
    </reportElement> 
</break> 

das Setzen kurz nach dem <band> Tag unter <details> Tag.

+0

Diese Lösung funktioniert gut, wenn die Seite mehr als 10 Zeilen hat (wie im Beispiel aus der Antwort). Falls die Anzahl der Zeilen kleiner als die angegebene Anzahl ist (die Höhe des textFields kann zunehmen), wird das Design unterbrochen. Ein weiteres Problem - die Situation, wenn wir einen Bericht mit einer geraden Anzahl von Seiten 10 haben, zum Beispiel 40. Die leere Seite wird am Ende des Berichts hinzugefügt. –

+0

@AlexK Ich habe im Moment keinen Zugriff auf Jasper, kann also nicht bestätigen, aber wenn die Datensätze weniger als 10 sind, wird der Seitenumbruch einfach nicht hinzugefügt. Für Datensätze unter 10 gibt es keinen Seitenumbruch und alles wird auf der ersten Seite gedruckt. Der nächste Teil zum Hinzufügen einer zusätzlichen Seite ist möglicherweise wahr, ich kann mich nicht erinnern, welche Problemumgehung ich verwendet habe. –

1

Dies hängt von der eingestellten Seitenhöhe ab.

+0

Seitenhöhe ist nicht der richtige Weg, um zu steuern, wenn sich die Textgröße ändert, gilt die Anzahl für einen Wurf. Gibt es keine andere Möglichkeit, die Anzahl zu bestimmen? –

+0

Dann können Sie das mit Variablen tun. Sie können eine Variable inkrementieren, bis das gewünschte Limit erreicht ist. Danach müssen Sie auf einer anderen Seite beginnen. Ich weiß nicht, ob es einen anderen Weg gibt, dies zu tun. –

+0

Einen Weg gefunden, siehe meine Antwort auf die Post. –

Verwandte Themen