+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

Objekt-Liste als Datenquelle


(Guest) #1

Hallo Zusammen,
ich möchte in meiner C#-Anwendung List & Label 13 für die Druckaufbereitung nutzen.

Innerhalb meiner Anwendung arbeite ich nicht direkt mit der Datenbank bzw. über DataSets, sondern mit Business Objekten, die über Properties Daten bereitstellen. Dabei ist es möglich, dass das einzelne Objekt wiederum andere Objekte als Property zur Verfügung stellt.

Beispiel:
Objekt Kunde beinhaltet die Eigenschaften ID, Name, Kundennummer, Telefon. Zusätzlich stellt er eine Property “Ansprechpartnerliste” bereit. Diese stellt eine Liste von Anprechpartnern dar, die dem Kunden zugeordnet sind und wiederum eigene Eigenschaften wie z.B. Name, Vorname etc.

Ich möchte nun z.B. eine Kundenliste erstellen. In dieser Liste soll pro Kunde eine Liste mit seinen Ansprechpartnern gedruckt werden. Für das Designen des Reports übergebe ich dem List & Label Designer eine Kundenliste. Da ich allerdings für das Designen keine Daten benötige, ist die Liste leer. List & Label kann diese Liste leider nicht auflösen, d.h. es stehen keine Datenquellen im Designer zur Verfügung.

Sobald ich die Liste mit Daten fülle und diese dann dem Designer übergebe, wird die Objektstruktur aufgelöst und bereitgestellt. Dabei ist aber anzumerken, dass nur “untergeordnete” Objekte aufgelöst werden, wenn diese auch mit Daten versehen sind. Für obiges Beispiel bedeutet dies, dass die Ansprechpartnerliste nur dann vom Designer zur Verfügung gestellt wird, wenn mindestens ein Kunde mit einem Ansprechpartner in der Liste aufgeführt ist. Sollten alle Kunden der Liste keinen Ansprechpartner haben, kann der Designer das Objekt Ansprechpartner nicht auflösen und somti auch nicht seine Properties als Datenfelder bereitstellen.

Gibt es eine Möglichkeit, Datenquellen in Form von Objektlisten zur Verfügung zu stellen, ohne diese vorher mit “Dummydaten” versorgen zu müssen. Schließlich benötige ich für das Design nur die Datenstruktur und nicht die Daten selbst. Zudem muss ich sicherstellen, dass alle untergeordneten Objekte mindestens einmal mit Daten versorgt sind.

Bin für jede Hilfe dankbar!

Chris


(Guest) #2

“Christian Weinert” <chr.weinert@w…> schrieb im Newsbeitrag
news:3876943200891251@combit.net

Beispiel:
Objekt Kunde beinhaltet die Eigenschaften ID, Name, Kundennummer, Telefon.
Zusätzlich stellt er eine Property “Ansprechpartnerliste” bereit. Diese
stellt eine Liste von Anprechpartnern dar, die dem Kunden zugeordnet sind
und wiederum eigene Eigenschaften wie z.B. Name, Vorname etc.

Das “GenericList”-Beispiel (im .NET-Verzeichnis) macht doch eigentlich genau
sowas. Wenn ich da den Bereich mit der Bestellungsgenerierung rausnehme,
habe ich die Bestellinfos trotzdem noch im Designer. Also sollte es fuer
Deinen Fall funktionieren, eine List zu verwenden, wobei die
Kundenklasse eine List als Property anbietet.

G.


(Guest) #3

Vielen Dank für die Antwort.

Ich habe mir das Beispiel angesehen. Es wird dem Designer zwar eine generische Liste mit Objekten übergeben, bei diesen Objekten wird über die Methode GetGenericList sichergestellt, dass jedes Property mindestens einmal mit Daten versorgt wurde. Und darin liegt ja mein Problem. Für den Designmodus möchte ich eigentlich keine Daten zur Verfügung stellen. Zudem muss ich dabei auch noch sicherstellen, dass alle untergeordneten Objekte mit Daten versorgt werden. Der L&L Designer scheint ohne Daten die Objektstruktur nicht vollständig auflösen zu können.

Beispiel:
1.) Klasse Kunde:
“einfache Properties”:
Suchbegriff
Kundennummer

  "Objekte als Properties":
      List<Adresse>
      List<Ansprechpartner>

2.) Klasse Adresse
“einfache Properties”:
Strasse
PLZ
ORT

3.) Klasse Ansprechpartner
“einfache Properties”:
Vorname
Nachname
Telefon
“Objekte als Properties”:
Adresse

Wenn ich dem Designer nun eine leere Kundenliste übergebe (new List() ), kann er die Objekt-Properties nicht auflösen. Übergebe ich ihm eine Liste mit einem Kunde ohne Adresse und Ansprechpartner bietet er mir nur die “einfachen Properties” der Klasse Kunde an. Fülle ich die Liste der Ansprechpartner nun mit einem Ansprechpartner ohne Adresse, erkennt der Designer zwar den Bezug zum Kunden, auf die Property “Adresse” beim Ansprechpartner muss ich dennoch verzichten. Erst wenn auch diese mit Daten versorgt wurde, kann der Designer das Objekt Adresse auflösen…

Vielleicht hilft es, dass Demoprojekt von List & Label abzuändern, um mein Problem zu verdeutlichen. In der Methode buttonDesign_Click einfach die DataSource des Reports löschen und dann auf eine leere Customer-Liste setzen:

LL.DataSource = null;                                // notwendig, sonst zeigt der Designer die Datenquelle des zuvor bearbeiteten Reports an
customerList = new List<Customer>();                 // Zurücksetzen der lokalen Variable customerList auf eine leere Liste
LL.SetDataBinding(customerList, string.Empty);       // leere Liste an Designer binden

Der Designer zeigt nun keine Order-Datenquelle mehr an…

Gruß
Christian

“Christian Weinert” <chr.weinert@w…> schrieb im Newsbeitrag
news:3876943200891251@combit.net

Beispiel:
Objekt Kunde beinhaltet die Eigenschaften ID, Name, Kundennummer, Telefon.
Zusätzlich stellt er eine Property “Ansprechpartnerliste” bereit. Diese
stellt eine Liste von Anprechpartnern dar, die dem Kunden zugeordnet sind
und wiederum eigene Eigenschaften wie z.B. Name, Vorname etc.

Das “GenericList”-Beispiel (im .NET-Verzeichnis) macht doch eigentlich genau
sowas. Wenn ich da den Bereich mit der Bestellungsgenerierung rausnehme,
habe ich die Bestellinfos trotzdem noch im Designer. Also sollte es fuer
Deinen Fall funktionieren, eine List zu verwenden, wobei die
Kundenklasse eine List als Property anbietet.

G.


(Guest) #4

Mir scheint, combit hat Dein Flehen erhoert :-). Im neuesten Servicepack ist
eine Aenderung genau in dem Bereich verzeichnet.

G.