Liste und Massive wie Datenquelle für den Bericht

Die Mehrheit von modernen Berichtsgeneratoren arbeitet mit den ganz beliebigen Datenlagern. Aber es gibt nur eine Zahl den Generatoren, die mit Datenlisten und Massiven  im Sinne der Datenquellen arbeiten können. In diesem Beispiel zeige ich wie das in FastReport .Net funktioniert.

Ein Paar wichtigen Momenten:

- Felder von der Objektsliste sollen wie „public“ eingestellt werden, um im Bericht sichtbar zu seien;
- außer den Listen kann man im Bericht die Daten aus den beliebigen iEnumerable Sammlungen übergeben;
- für die Übergabe der ling-Anfragen braucht man die Liste mit Hilfe von „ToArray“ Methode zu bearbeiten.

Erstellen wir jetzt eine WindowsForms Anwendung.

Geben wir in den Bericht eine Liste der Kategorien über. Für jede Kategorie wird die Liste der Produkten hinzugefügt.

Erstellen wir Variablen:       

1
2
 private List<Category> FBusinessObject;
 private Report FReport;

Das sind die Liste der Kategorien und ein Berichtsobjekt.

Weiter, fügen wir eine Klasse der Produkten hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Product
 {
 private string FName;
 private decimal FUnitPrice;
 
 public string Name
 {
 get { return FName; }
 }
 
 public decimal UnitPrice
 {
 get { return FUnitPrice; }
 }
 
 public Product(string name, decimal unitPrice)
 {
 FName = name;
 FUnitPrice = unitPrice;
 }
 }

Wie wir sehen, sind die Objekten “public”. 

Jetzt fügen wir eine Klasse der Kategorien hinzu:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Category
 {
 private string FName;
 private string FDescription;
 private List<Product> FProducts;
 
 public string Name
 {
 get { return FName; }
 }
 
 public string Description
 {
 get { return FDescription; }
 }
 
 public List<Product> Products
 {
 get { return FProducts; }
 }
 
 public Category(string name, string description)
 {
 FName = name;
 FDescription = description;
 FProducts = new List<Product>();
 }
 }

Ein der Felder des Objekts „Category“ - die Liste der Produkten. Mit anderen Wörtern  ist die Liste der Kategorien ein Massiv der Massiven.

Jetzt erstellen wir eine Datenquelle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 public void CreateDataSource()
 {
 FBusinessObject = new List<Category>(); //Create list of categories
 
 Category category = new Category("Beverages", "Soft drinks, coffees, teas, beers"); //Create new instance of category
 category.Products.Add(new Product("Chai", 18m)); //Add new product to category
 category.Products.Add(new Product("Chang", 19m));
 category.Products.Add(new Product("Ipoh coffee", 46m));
 
 FBusinessObject.Add(category); //Add the category to the List
 
 category = new Category("Confections", "Desserts, candies, and sweet breads");
 category.Products.Add(new Product("Chocolade", 12.75m));
 category.Products.Add(new Product("Scottish Longbreads", 12.5m));
 category.Products.Add(new Product("Tarte au sucre", 49.3m));
 
 FBusinessObject.Add(category);
 
 category = new Category("Seafood", "Seaweed and fish");
 category.Products.Add(new Product("Boston Crab Meat", 18.4m));
 category.Products.Add(new Product("Red caviar", 15m));
 
 FBusinessObject.Add(category);
 }

Aus den Kommentaren sieht man, wie man die Liste der „Category“ Objekten erstellt. Weiter wird eine neue „Category“ auch erstellt und in die eine gebrauchte Zahl der Produkten hinzugefügt wird. Weiter fügt man auch diese „Category“ in die Liste der „Categories“. Auf diese Weise fügen wir mehrere „Categories“ mit den Produkten hinzu.

Wir haben eine Datenqueele erstellt. Die soll man im Bericht mit Hilfe von die Methode „RegisterData“ registrieren:

1
2
3
4
 public void RegisterData()
 {
 FReport.RegisterData(FBusinessObject, "Categories");
 }

Diese Methode macht unsere Liste im Bericht unter den Namen „Categories“ verfügbar.

Fügen wir eine Methode des Berichtstarts im Designer hinzu:

1
2
3
4
5
6
7
 public void DesignReport()
 {
 FReport = new Report();
 CreateDataSource();
 RegisterData();
 FReport.Design();
 }

Hier haben wir ein Examplar des Berichtsobjekts und eine Datenquelle erstellt, wir haben auch diese Datenquelle im Bericht registriert und im Designer geöffnet.

Fügen wir eine Taste der Methode des Aufrufs vom Berichtsdesigner auf die Form hinzu. 

1
2
3
4
 public void button1_Click(object sender, EventArgs e)
 {
 DesignReport();
 }

Im Designer braucht man eine Datenquelle  im Menü „Data→Choose Report Data“ zu wählen...

 

Erstellen wir einen einfachen Bericht „Master-Detail“:

 

Und starten wir den Bericht in der Vorschau:

Und jetzt Schlussfolgerungen. FastReport .Net beweist uns, dass es ein flexibles, modernes Produkt ist. Sie können gebrauchte Daten aus Ihrer Anwendung verwenden, ohne irgendwelche Sorgen dafür, um diese Daten in den Typ „DataTable“ zu bearbeiten.