LL18 Liste mit ObjectDataProvider

Hallo,

ich habe folgende Objektstuktur:

Klasse cVorgang:
Felder: Vorgangsnummer, Vorgangsdatum,…, List liPos

Klasse cPosition:
Felder: Positionsnummer, Anzahl, Bezeichnung…, List liZub

Klasse cZubehoer:
Felder: Unterpositionsnummer, Anzahl, BezeichnungZub,…

Ich möchte folgendes Layout erreichen (in einer Tabelle):

cPosition.Positionsnummer cPosition.Anzahl cPosition.Bezeichnung
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cPosition.Positionsnummer cPosition.Anzahl cPosition.Bezeichnung
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cPosition.Positionsnummer cPosition.Anzahl cPosition.Bezeichnung
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub
cZubehoer.Unterpositionsnummer cZubehoer.BezeichnungZub

Also es gibt n Positionen mit jeweils n Zubehörpositionen.

Kann mir jemand helfen?

   LL.DataSource = new ObjectDataProvider(m_AktuellerVorgang <--KLASSE cVorg!] );            
   LL.Design();

So habe ich im Designer zwar alle Felder zur Verfügung, aber nicht in der gewünschten Struktur oder hierarchie.

Hallo San Dor,

vielen Dank für Ihren Beitrag.

Bitte prüfen Sie, ob die Verwendung eines DataMembers und LlAutoMasterMode.AsVariables das gewünschte Erebnis liefert:

LL.AutoMasterMode = LlAutoMasterMode.AsVariables;
LL.DataSource = new ObjectDataProvider(m_AktuellerVorgang <–KLASSE cVorg!] );
LL.DataMember = “cVorg”
LL.Design();

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH

Hallo, dazu habe ich eine weitere Frage:

in meinem alten List-Report (LL11) habe ich die Kopfdaten als Variables mithilfe LLDefineField folgendermaßen definiert: Invoice.Number, Invoice.Date, Customer.Number, Customer.Name usw. Im (alten) Designer konte ich dabei mehrere Root-Elemente beobachten:
[-]Variablen
[+]Invoice
[+]Customer
[+]LL

Ich versuche nun den alten Report aus .NET-Program zuzugreifen und verwende dazu eine Klasse:
class Invoice
{
[DisplayName(“Invoice.Number”)]
public string Num { get; set; }
[DisplayName(“Invoice.Date”)]
public DateTime Date { get; set; }
[DisplayName(“Customer.Number”)]
public string CustomerNum { get; set; }
[DisplayName(“Customer.Name”)]
public DateTime CustomerName { get; set; }

    public List<InvoiceItem> Items { get; set; }

und binde diese Klasse an einen Report:
c.DataSource = new ObjectDataProvider(new Invoice());
c.AutoMasterMode = LlAutoMasterMode.AsVariables;
c.DataMember = “Invoice”;

            c.AutoProjectFile = projectFile;
            c.AutoProjectType = LlProject.List;
            c.Design();

Nun erscheint meine Datenstruktur unterm Element “Invoice” (offensichtlich aus DataMember-Property übernommen):
[-]Variablen
[-]Invoice
[+]Invoice
[+]Customer
[+]LL

Wie kann man diese neue Ebene unterdrucken? Die Felder unter Customer heißen nun “Invoice.Customer.Number” und nicht wie gewünscht “Customer.Number”! Das gleiche gilt für die Items - die tauchen nun als “Items.ItemField” auf.
Wie sonst kann ich die Feld-/Variablenamen für die bestehende Reports definieren?

Danke im Voraus!

Hallo Herr Pukhovskiy,

vielen Dank für Ihren Beitrag.

Anhand von

[DisplayName(“Invoice.Number”)]

könnte ein

[DisplayName(“Number”)]

verwendet werden. In diesem Fall muss unterhalb von Invoice ein Customer-Objekt zurückgeliefert werden.

Mit freundlichen Grüßen

Christian Rauchfuß
Technischer Support
combit GmbH