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

Werte für ungebundene Tabellen-Felder initialisieren?


(Markus Accola) #1

Ich verwende zum ersten mal die .NET Komponente (LL19) und finde für folgendes Problem kein Beispiel bzw. Doku.

Die Daten befinden sich in einer List:
List list = ItemList.CreateItemList();
LL.SetDataBinding( list, string.Empty );

In der Tabelle im Beriechtscontainer sollen optionale Felder möglich sein. Diese sollen nur bedingt definiert werden (Performance der Datenaufbereitung).

Ich habe die Felder gemäss Doku im Ereignis LL_AutoDefineNewLine definiert (integer field):
this.LL.Fields.Add( “DataItem.Advanced.Field_1”, 0 );

Was mir jetzt nicht klar ist: Wo definiere ich den Wert für jede Ausgabezeile? Der Wert kann, muss aber nicht, aus den anderen (gebundenen) Werten der Zeile berechnet sein. Im Ereignis wo das Feld definiert wird sind keine Informationen der Zeile, andere Felder, Index der gebundenen Liste etc. verfügbar.

Ich habe auch im Ereignis LL_AutoDefineField versucht einen Wert zu setzen. Funktioniert nicht d.h. es wird immer der Initialwert 0 angezeigt.

Ich habe dies jeweils immer in der Designer-Datenvorschau geprüft.


(Markus Accola) #2

Ich glaube die Verwirrung hat sich etwas gelöst (Anfängerfehler).

Da der Designer immer in der Ansicht Layout-Vorschau aufgeht, werden bereits auch die Ereignisse zum definieren der Felder aufgerufen (LL_AutoDefineField dann LL_AutoDefineNewLine), wobei das Ereignis LL_AutoDefineField für ungebundene Felder nicht ausgelöst wird.

In LL_AutoDefineNewLine steht in der Doku dass dieses Ereignis “vor der automatischen Anmeldung” ausgelöst wird. Dies bedeutet aber anscheinend nicht (!), dass die Feldinhalte nicht bereits definiert sind. Auf die Felder muss via die LL-Instanz zugegriffen werden, da im Ereignisargument keine Daten übergeben werden. Ich kann so den Wert eines ungebundenen Feldes initialisieren:

// Wert ungebundene Feld = Wert gebundenes Feld + 10
this.LL.Fields.Add( “DataItem.Advanced.Field_1”, Convert.ToInt32( this.LL.Fields[“DataItem.ItemNo”] ) + 10 );

Bitte um Ergänzung wenn etwas nicht im Sinne des Erfinders sein sollte.