Filterung der erstellten Matrix

2021-06-23

Im FastReport erlaubt uns das Matrix-Objekt, Daten zu filtern. Das ist eine der am häufigsten nachgefragten Funktionen und viele Anwender sind damit sehr zufrieden. Es gibt jedoch Fälle, in denen die Filterung der Ausgangsdaten nicht geeignet ist.

Betrachten wir unten Matrix.

Ausgangsmatrix

Wie Sie im obigen Beispiel sehen können, handelt es sich um eine Umsatzstatistik in der nach Mitarbeitern für 5 Jahre sortiert wird. Für den Mitarbeiter Steven Buchanan liegen keine Statistiken für 2011, 2012 und 2015 vor. Das bedeutet, dass, wenn wir die Matrix nach Jahr filtern und 2013 und 2014 ausschließen, Steven in der Matrix fehlt.

Um das Bild vollständig zu halten, müssen Sie alle Mitarbeiter berücksichtigen, auch wenn er in der Berichtsperiode keinen Umsatz hatte. In diesem Fall müssten Sie eine der Optionen verwenden:

1) die Rohdaten künstlich mit Nullwerten für jedes Jahr anreichern, in dem der Mitarbeiter keinen Umsatz hatte;
2) die bereits erstellte Matrix filtern, indem Sie unnötige Spalten entfernen.

In der Berichtvorlage:

Berichtvorlage

Für die Zelle Year fügen wir das Ereignis "BeforePrint" hinzu:

Für die Zelle Year fügen wir das Ereignis BeforePrint hinzu

Mit dem folgenden Code:

private int index = 1;
 private List<int> removeColumns = new List<int>();
 
 private void Cell4_BeforePrint(object sender, EventArgs e)
 { 
 if (new List<int>(){2013, 2014}.Contains((int)Cell4.Value))
 {
 removeColumns.Add(index); 
 }
 index++; 
 }

Hier haben wir Indizes von Spalten geschrieben, die wir löschen wollen. Erstellen wir nun einen ModifyResult- Ereignishandler für Matrix, um das bereits erstellte "Matrix"-Objekt zu bearbeiten:

 private void Matrix1_ModifyResult(object sender, EventArgs e)
 {
 removeColumns.Reverse();
 foreach (int del in removeColumns)
 { 
 Matrix1.ResultTable.Columns.RemoveAt(del);
 }
 }

Da beim Löschen von Spalten oder Zeilen der Index aller folgenden verschoben wird, ist es notwendig, vom Ende her zu löschen - vom größten Index. Deshalb haben wir die Liste der zu löschenden Indizes in umgekehrter Reihenfolge mit der Methode Reverse() aufgebaut. Dann haben wir einfach die Spalten über die entsprechenden Indizes gelöscht. Schauen wir mal, was das Ergebnis ist:

Auswertungstabelle

Die Spalten für 2013 und 2014 fehlen in der Matrix, aber der Mitarbeiter Steven Buchanan bleibt erhalten. Der gewünschte Effekt wird erreicht! Außerdem können Sie überflüssige Zeilen mit einer anderen Sammlung - Matrix1.ResultTable.Rows - entfernen. Jetzt wissen Sie, wie Sie die Matrix filtern können, wenn die Datenfilterung nicht geeignet ist.

.NET .NET FastReport FastReport Filtering Filtering Matrix Matrix
10. Juli 2026

Wie konfiguriert man eine Content Security Policy für FastReport .NET WEB-Berichte

Lernen Sie, wie Sie die Content Security Policy für FastReport .NET WEB-Berichte konfigurieren: eine Übersicht über CSP-Direktiven und -Werte, Änderungen in der FastReport-Architektur, typische Umgehungsszenarien und Möglichkeiten, sich davor zu schützen.
22. Juni 2026

So konfigurieren Sie einen Bericht mit Business Objects im Code und im FastReport .NET Designer

In diesem Artikel wird anhand eines praxisnahen Beispiels gezeigt, wie Sie eine .frx-Berichtsvorlage erstellen und verwenden, die mit hierarchischen Business Objects in FastReport .NET herzustellen.
28. April 2026

Neues Berichtsvalidierungssystem in FastReport VCL

In diesem Artikel erklären wir, wie die Berichtsprüfung funktioniert, wie sie konfiguriert wird, wie Sie eigene Regeln anhand von Beispielen erstellen und geben Einblicke in interessante Neuerungen.

© 1998-2026 Fast Reports Inc.