logo
small logo
  • Produkte
  • Shop
  • Support
  • Articles
  • Customer panel Support
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Home
  • /
  • Articles
  • /
  • Wie kann man Spalten farblich hervorheben, abhängig vom Spaltenwert
  • Wie man automatisch Standard-E-Mail-Client-Einstellungen für das Senden von E-Mails aus FastReport .NET setzt

    12. Februar 2021

    Wie bei vielen anderen Reportgeneratoren können Sie mit FastReport .NET einen Report per E-Mail in

    read more
  • Wie wird das Objekt WebReport in ASP .Net Core App verwendet?

    17. Januar 2018

    Neulich veröffentlichte Fast Reports eine neue Bibliothek für die Arbeit mit dem Framework ASP .Net

    read more
  • Wir machen und geben ITF-14-Barcodes in .NET-Anwendungen aus

    25. Februar 2021

    ITF-14 (Interleaved Two of Five) ist ein zweispuriger numerischer Code, mit anderen Worten Code mit

    read more
  • Wie FastReport Business Graphics .NET installieren

    18. August 2021

    In diesem Artikel erfahren Sie, wie Sie FastReport Business Graphics .NET auf Ihrem Computer installieren

    read more
  • Wie ein WebReport-Objekt in FastReport.Core aktualisieren

    21. September 2020

    Manchmal gibt es eine Aufgabe, den Report zu aktualisieren, z. B. wenn Sie einen neuen

    read more

Wie kann man Spalten farblich hervorheben, abhängig vom Spaltenwert

9. Januar 2019

Matrixberichte sind ein ausgezeichnetes Werkzeug für die Datenanalyse. Im Grunde ist eine Matrix in Analyseberichten eine Pivottable. Um die Analyse zu erleichtern, wird häufig «bedingte Hervorhebung» verwendet. Es ist ein ständiges Werkzeug in FastReport.Net. Bedingte Hervorhebung bedeutet, dass die Datenzellen in Farbe, Schriftart oder Symbolen hervorgehoben werden, abhängig von einer bestimmten Bedingung. Aber die bedingte Hervorhebung funktioniert mit einzelnen Zellen. Aber was müssen wir machen, wenn wir die gesamten Spalten abhängig vom Wert in der Kopfzeile hervorheben möchten? Zum Beispiel, um die Wochenenden hervorzuheben, müssen wir auf das «allmächtige» Berichtsskript zurückgreifen. Die normalen Farbauswahlwerkzeuge werden hier nicht helfen.

Erstellen wir eine Matrixvorlage basierend auf der MatrixDemo-Tabelle aus der Demo-Datenbank nwind.xml:

Die Idee ist, Spalten mit Werten in den Kopfzeilen zu finden, die die Bedingung erfüllen. In dieser Matrix zeigen wir das Einkommen der Mitarbeiter nach Jahren an.

Lassen Sie uns die Spalten mit den Überschriften 2012 und 2014 hervorheben. Um dies zu tun, müssen wir den Titel in dieser Spalte und alle nachfolgenden Zellen, einschließlich der Summe, mit einer Farbe markieren. Erstellen wir ein BeforePrint-Ereignis für die Matrix:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// Liste der markierten Spalten
 private List<int> markedColumns;
 // Zähler für die Spalten in der ersten Zeile
 private int firstLineColumn;
 // Zähler für die Spalten in den folgenden Zeilen
 private int secondLineColumn;
 
// Matrix-Ereignishandler
 private void Matrix2_BeforePrint(object sender, EventArgs e)
 {
 // Neue Liste für markierte Spalten erstellen
 markedColumns = new List<int>();
 // Zähler der ersten Zeile zurücksetzen
 firstLineColumn = 0;
 // Zähler für nachfolgende Zeilen zurücksetzen
 secondLineColumn = 0;
 }

Am Anfang haben wir einige Variablen, die wir in den Ereignishandlern verwenden werden, hinzugefügt. Diese Variablen speichern markierte Spalten für Zeilen. Als nächstes initialisieren wir die Variablen, bevor die Matrix angezeigt wird.

Erstellen wir einen weiteren BeforePrint-Ereignishandler für die Zelle mit dem Wert [Year]:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 // Ereignishandler für Zellen in der ersten Zeile der Matrix
 private void Cell18_BeforePrint(object sender, EventArgs e)
 {
 // sender als TableCell benutzen
 TableCell cell = sender as TableCell;
 // Überprüfung den erforderlichen Wert in einer Zelle
 if (cell.Text == "2012" || cell.Text == "2014") 
 {
 // die Füllfarbe für diese Zelle festlegen
 cell.FillColor = Color.Brown;
 // in der Liste der markierten Spalten speichern
 markedColumns.Add(firstLineColumn);
 }
 // den Spaltenzähler für die erste Zeile erhöhen
 firstLineColumn++;
 } 

Hier müssen Sie eine kleine Notiz machen, um die Essenz zu verstehen. Tatsache ist, dass die Ausgabe der Matrix beim Erstellen eines Berichts in FastReport Zeile für Zeile erfolgt. Deshalb speichern wir die Spaltennummern für die erste Zeile der Matrix. In unserem Fall werden 2 Werte in die Liste der markierten Spalten aufgenommen.

Fügen Sie nun einen Ereignishandler für die Zelle mit dem Wert [Revenue] hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 // Ereignishandler für Zellen in den folgenden Zeilen der Matrix. Sie müssen ihn für die zweite Zeile und die Summen festlegen.
 private void Cell21_BeforePrint(object sender, EventArgs e)
 {
 // sender als TableCell benutzen
 TableCell cell = sender as TableCell;
 // den aktuellen Index in der markedColumns-Liste finden
 if (markedColumns.IndexOf(secondLineColumn) != -1)
 {
 // die Füllfarbe für diese Zelle festlegen
 cell.FillColor = Color.Red;
 }
 // den Zähler erhöhen
 secondLineColumn++;
 // Zähler für die nächste Zeile zurücksetzen
 if (secondLineColumn >= firstLineColumn)
 secondLineColumn = 0;

In diesem Handler finden wir die Spalten, die den ausgewählten Spalten aus der ersten Zeile entsprechen, und färben die Zellen in ihnen rot. Wenn die letzte Spalte erreicht ist, setzen wir die Variable für die nächste Zeile auf Null. Wie Sie wissen, ist die zweite Zeile der Matrix beim Erstellen des Berichts dynamisch. Dies bedeutet, dass es für jede Datenzeile in der Quelle ausgegeben wird. Also müssen wir jede Zeile überprüfen und die Zellen in den richtigen Spalten färben.

Die im Skript angegebene Lösung ist ungewöhnlich, aber es ist die einzige mögliche Lösung für diese Situation, da die Matrix dynamisch erstellt wird und die endgültige Struktur, die Koordinaten und die Position der Zellen nicht speichert, bevor sie direkt auf dem Arbeitsblatt gezeichnet wird. Nur das Muster (das wir im Designer gesehen haben) und die Textwerte der Matrixheader werden im Speicher gespeichert.

Daher müssen wir alle Zeilen durchlaufen und die Spalten zum Färben merken.

Basierend auf dem Skript, mussten wir drei BeforePrint-Ereignishandler für die Matrix, die Zelle [Year] und die Zelle [Revenue] erstellen. Aber es gibt eine andere dritte Zeile in unserer Matrix. Es zeigt die Ergebnisse an, und es wäre gut, sie auch entsprechend den ausgewählten Spalten zu färben. Um dies zu tun, anschließen Sie für die Zelle unter [Revenue] einfach den BeforeFrint-Ereignishandler von derselben Zelle [Revenue]:

 

Und jetzt starten wir den Bericht:

 

Wenn Sie die Ergebnisse in einer anderen Farbe färben möchten, müssen Sie einen eigenen BeforePrint-Ereignishandler für die Ergebniszelle erstellen, der dem Ereignishandler [Revenue] ähnelt.

about product download buy
avatar
Dmitriy Fedyashov
Technical Writer
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Shop
  • Download
  • Dokumentation
  • Referenzen
  • Informationen zur Deinstallation unserer Produkte
  • Ticket system
  • FAQ
  • Tutorial Video
  • Forum
  • Articles
  • Unsere Nachrichten
  • Presse über uns
  • Partner
  • Außergewöhnliche Lizenzierung
  • Kontakte

© 1998-2022 by Fast Reports Inc.

  • Datenschutz