Interaktiver Bericht mit vorläufiger Dateneingabe in eine Tabelle

Interactive report with preliminary data entry into the table

Wie Sie bereits wissen, können FastReport.NET Berichte Dialogformularen enthalten, die angezeigt werden, bevor der Bericht erstellt wird. Mit diesen können einige Text-, boolesche oder numerische Variablen angegeben werden. Dies können Textfelder, Tabellen, Listen, Dropdown-Listen, Daten, Kontrollkästchen und sogar Listen mit Kontrollkästchen sein.

Dialogformulare werden in der Regel verwendet, um Daten in einem Bericht zu filtern oder um Kriterien für das Berichtsverhalten auszuwählen. Aber heute wollen wir eine andere mögliche Anwendung des Dialogformulars erläutern.

Betrachten wir den Fall, dass die Daten in einen Bericht eingegeben werden müssen, bevor er angezeigt wird. Dies ist ein ziemlich einfacher Fall, wenn es sich um einzelne Textfelder, Kontrollkästchen oder Listen handelt. Was aber, wenn Sie eine Tabelle mit Daten haben und diese Daten manuell anpassen möchten, bevor Sie den Bericht erstellen?

Hier kommt die Grid-Komponente Grid  zu Hilfe. Dies ist eine Datentabelle, die wir auf dem Dialogformular anzeigen können, bevor wir den Bericht erstellen.

Fügen wir dem Bericht ein Dialogformular hinzu und platzieren wir ein Grid-Kontrollelement darauf. Klicken wir mit der rechten Maustaste, um das entsprechende Kontextmenü aufzurufen:

Kontextmenü des Grid-Kontrollelements

Wählen wir “Edit Collumns…”, um der Tabelle Spalten hinzuzufügen.

Spaltenbearbeitungsfenster im Grid-Kontrollelement

Fügen wir im Bearbeitungsfenster drei Spalten hinzu - Name, Address, Phone. Bitte beachten Sie die Customers.Name Eigenschaft. Hier verweisen wir auf eine Customers-Datenquelle, die noch nicht im Bericht enthalten ist. Wir werden sie aber später mit Hilfe eines Skripts hinzufügen. Für andere Spalten müssen wir die entsprechenden Eigenschaften festlegen.

Die Vorlage für die Berichtsseite ist sehr einfach – das ist nur ein Table-Objekt mit drei Spalten. Wir befüllen sie im Berichtsskript.

Berichtsvorlage für Datenausgabe aus einem Dialogformular

Fügen wir nun einen StartReport-Ereignishandler für den Bericht hinzu:

Eigenschaftenanalyse für das Report-Objekt

Berichtsskript:

public class ReportScript
 {
 //Datenstruktur der Tabelle
 public class Customer 
 {
 public string Name {get; set; }
 public string Address {get; set; }
 public string Phone {get; set; }
 
 public Customer(string name, string address, string phone)
 {
 Name = name;
 Address = address;
 Phone = phone;
 }
 }
 
 private void _StartReport(object sender, EventArgs e)
 {
//Benutzerliste
List<Customer> customers = new List<Customer>();
//Ausfüllen der Benutzerliste mit Standarddaten 
 customers.Add(new Customer("Kevin Smith", "221 52nd st, Brooklyn, NY, United States", "+12127599755"));
 customers.Add(new Customer("Justin Ford", "1556 Broadway, suite 416, NY, United States", "+12145678900"));
 customers.Add(new Customer("Amanda Stephenson", "455 Larkspur Dr., CA, United States", "+14105175379"));
//Registrieren der Datenquelle im Bericht 
 Report.RegisterData(customers, "Customers"); 
 //Festlegung der Datenquelle in der Tabelle 
 Grid1.DataSource = Report.GetDataSource("Customers");
 //Festlegung der Felder in den Zellen 
 Cell6.Text = "[Customers.Name]";
 Cell7.Text = "[Customers.Address]";
 Cell8.Text = "[Customers.Phone]";
 }
}

In diesem Fall definieren wir die Customer-Datenstruktur, die für die Ausgabe von Tabellenzeilen im Dialogfenster und im Bericht verwendet wird. Als Nächstes erstellen wir eine Datenquelle namens Customers und füllen wir sie mit Customer-Instanzen aus. Dann registrieren wir die resultierende Datenquelle im Bericht. Erinnern Sie sich, wie wir ein Datenfeld für Spalten im Grid-Objekt festgelegt haben? Dies ist die Datenquelle, auf die wir verwiesen haben. Hier weisen wir Felder aus der Quelle den Tabellenzellen (Tabellenobjekt) in der Seitenvorlage zu.

Erstellen wir nun für das Tabellenobjekt auf der Berichtsseite einen ManualBuild-Ereignishandler. Dieses Ereignis wird nach der Erstellung des Objekts auf der Seite aufgerufen und ermöglicht es, die Tabelle zu ändern, die dann zur Anzeige bereit ist. So können wir den Text in der Tabelle mit dem Skript ändern.

Eigenschaftenanalyse des Table-Objektes

 private void Table1_ManualBuild(object sender, EventArgs e)
 {
 //Festlegung der Datenquelle 
 DataSourceBase rowData = Report.GetDataSource("Customers");
 //Initialisierung der Daten
 rowData.Init();
 //Anzeige der ersten Datenzeile
 Table1.PrintRow(0);
 //Anzeige der Spalte
 Table1.PrintColumns();
 //Durchlaufen aller Datenzeilen in der Quelle
 while (rowData.HasMoreRows)
 {
 //Ausgabe der nächsten Datenzeile 
 Table1.PrintRow(1);
 //Ausgabe der Spalte
 Table1.PrintColumns();
 //Verwenden des folgenden Eintrags aus der Quelle
 rowData.Next();
 }
 }

Hier füllen wir die Tabelle aus, indem wir einfach alle Datenzeilen durchlaufen.

Führen wir den Bericht aus. Das erste, was wir sehen, ist ein Dialogfenster mit einer Tabelle:

Dialogfeld mit der Tabelle

Doppelklicken wir auf die erste Zelle, um ihren Text zu bearbeiten:

Bearbeitung der ersten Zelle

Klicken wir auf OK und sehen wir uns das Ergebnis an:

Ergebnis des Programmcodes

Wie Sie sehen können, unsere Standarddaten wurden durch die ersetzt, die wir manuell eingegeben haben. Auf diese Weise können Sie den Benutzern die Möglichkeit anbieten, die Daten vor der Berichtserstellung manuell zu ändern. In diesem Beispiel wird die Tabelle mit Daten aus einem Skript gefüllt, aber es gibt keinen Grund, warum die Tabelle mit Daten aus einer Quelle nicht gefüllt wird.

Fast Reports
  • 800-985-8986 (Englisch, die USA)
  • +4930568373928 (Deutsch)
  • +55 19 98147-8148 (Portugiesisch)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314

© 1998-2024 Fast Reports Inc.
Trustpilot