Zeige "Seite X von Y" mit einem einzelnen Textfeld

8

Ich möchte ein Textfeld erstellen, das Page X of Y enthält, ohne es in zwei Teile zu teilen, wie in der üblichen Lösung. Mein Textfeld enthält "Page " + $V{currentPage} + " of " + $V{PAGE_NUMBER}" mit evaluationTime=auto .

Nehmen wir an, ich habe einen Bericht mit 10 Seiten. Drei sind die Titelband , sechs sind Detailband und eines ist das Summary Band . Meine Ergebnisse zeigen "Page 0 of 10" für die Titelband s, korrekte Zählungen für die Detailband s und "Page 0 of 10" für die Summary Band .

Wie stellen Sie sicher, dass die Variable überall und nicht nur in Detailband berechnet wird?

    
qarol 20.05.2012, 12:08
quelle

4 Antworten

15

Jaspersoft Studio, 6 +

Bei Jaspersoft Studio v6 oder wenn die erste Seitennummer dupliziert wird, versuchen Sie diese Lösung , die $V{MASTER_CURRENT_PAGE} verwendet. und $V{MASTER_TOTAL_PAGE} mit einer Evaluierungszeit von Master .

Jaspersoft Studio

Versuchen Sie für andere Versionen von Jaspersoft Studio die in den folgenden Unterabschnitten beschriebenen Schritte.

Erzeuge Variable

Erstellen Sie eine Variable wie folgt:

  1. Erstellen Sie eine Variable mit dem Namen V_CURRENT_PAGE_NUMBER
  2. Wählen Sie die Variable, um ihre Eigenschaften zu öffnen (siehe Abbildung)
  3. Setzen Sie Ausdruck auf: 1
  4. Setzen Sie Anfangswertausdruck auf: $V{PAGE_NUMBER}
    • Wenn die Seitennummer 0 anzeigt, verwenden Sie $V{PAGE_NUMBER} + 1 .
    • Wenn die Seitennummer immer 1 of Y anzeigt, setzen Sie Ausdruck auf $V{PAGE_NUMBER} anstelle des Anfangswertausdrucks und lassen Sie den Anfangswertausdruck leer.
  5. Setzen Sie Typ zurücksetzen auf: Page

Diese Einstellungen sind in der folgenden Abbildung dargestellt:

Wenn Sie Ausdruck auf 1 setzen, wird verhindert, dass der Wert null lautet. Das heißt, wenn die Fußzeile Seite null von 4 anzeigt, bedeutet dies wahrscheinlich, dass der Ausdruck nicht festgelegt wurde.

Die Variable wird erstellt.

Fußzeile hinzufügen

Fügen Sie wie folgt ein Seitenfuß hinzu:

  1. Wählen Sie den Bericht im Gliederungsfenster
  2. aus
  3. Überprüfen Sie die Zusammenfassung mit Seitenkopf und -fuß , um sicherzustellen, dass der Seitenfuß auf der Übersichtsseite angezeigt wird.
  4. Fügen Sie ein Seitenfuß -Band hinzu.

Die Fußzeile wird hinzugefügt.

Erstellen Sie ein Textfeld

Erstellen Sie ein Textfeld wie folgt:

  1. Ziehen Sie ein einzelnes Textfeld auf das Seitenfuß -Band und legen Sie es dort ab.
  2. Wählen Sie das Textfeld aus.
  3. Setzen Sie Ausdruck auf: msg("Page {0} of {1}", $V{V_CURRENT_PAGE_NUMBER}, $V{PAGE_NUMBER})
  4. Setzen Sie Evaluierungszeit auf: Auto

Diese Einstellungen sind in der folgenden Abbildung dargestellt:

Das einzelne Textfeld wird erstellt.

Vorschaubericht

Bei einem Bericht mit drei Seiten plus einer Übersichtsseite zeigt die Vorschau des Berichts Folgendes an:

Die Übersichtsseite zeigt:

Siehe Robert Ensingers Blogpost zu diesem Thema für weitere Details.

    
Dave Jarvis 31.05.2016 17:38
quelle
6

Der gemeinsame Ansatz verwendet, wie Sie erwähnt haben, zwei getrennte Textfelder:

Aktuelle Seitennummer

$V{PAGE_NUMBER} mit Evaluierungszeit: Jetzt

Gesamtseitenzahl

$V{PAGE_NUMBER} mit Evaluierungszeit: Bericht

    
lifeisfoo 10.01.2016 10:30
quelle
4

Ich habe versucht diesen Ansatz , aber endete mit falschen Seitenzahlen: {1/7, 1 / 7 , 2/7, 3/7, 4/7, 5/7, 6/7}.

Verwenden Sie für JasperReports 6+ die Systemvariablen MASTER_CURRENT_PAGE und MASTER_TOTAL_PAGES und vergessen Sie nicht, die Evaluierungszeit des Textfelds auf Master :

zu setzen %Vor%

Siehe: Ссылка

    
MartinW 02.03.2017 08:17
quelle
2

In Bezug auf die aktuelle Seitennummer ist evaluationTime=now und $V{PAGE_NUMBER} Ihre Antwort.

Leider glaube ich nicht, dass Sie erreichen können, was Sie wollen, weil es einen Fehler in PAGE_COUNT gibt Wenn Split Allowed für das Detailband aktiviert ist. Sonst würden evaluationTime=now und "Page " + $V{PAGE_NUMBER} + " of " + $V{PAGE_COUNT}" wahrscheinlich funktionieren.

    
KCD 16.01.2014 23:38
quelle

Tags und Links