Sehr geehrte Damen und Herren
Wir verwenden LL für das Reporting in einer Applikation die Versuche auswertet. Je nach Versuchstyp können verschiedene Felder für den Report angewählt werden. In der Applikation sind insgesammt > 300 Parameter verfügbar. In der Datenbank sind sie abgelegt als 1:n Beziehung (Versuch 1:n Parameter) abgelegt. Ein Parameter besteht aus mehreren Werten (Wert, Wert gerundet, Bezeichnung, Einheit, usw).
Für eine Prüfserie soll nun ein Protokoll erstellt werden, bei dem pro Tabellenzeile von einem Versuch gewisse Werte (vom Benutzer definiert) angezeigt werden sollen.
Den Versuch das ganze über Databindings zu realisieren hat nicht geklappt, da die einzelnen Parameter einen eigenen Namen benötigen, da sonst keine Möglichkeit besteht sie zu identifizieren. Deshalb verwende ich den AutoDefineNewLine Handler. Dabei sind wir auf ein interessantes Phänomen/Bug gestossen:
Wird eine Tabelle angelegt, so können die Werte Test.Einheit und Test.Wert nicht gewählt werden (Bild 1). Wird die Tabelle jedoch erstellt (z.B. mit dem Field1), so können danach aus der rechts gelegenen Variablen-/Feldliste die Felder Test.Einheit und Test.Wert als zusätzliche Kolonne herübergezogen werden und funktionieren dann auch.
Wird die Tabelle per Doppelklick geöffnet und eine neue Spalte hinzugefügt (Bild 2) so werden im folgenden Fenster die Test.Einheit und Test.Wert nicht angezeigt (Bild3). Die Eingabe von Test.Einheit oder Test.Wert direkt funktioniert aber (und wird auch korrekt ausgegeben).
Das oben beschriebene Verhalten kann mit LL 17 (neuestes SP) und LL 18 (Demoversion) nachvollzogen werden.
Bild 1:
Bild][/url] 2:
Bild][/url] 3:
Folgender][/url] Code wurde für die Simulation der Situation verwendet:
public void Edit()
{
_ll.Debug = LlDebug.Enabled;
List<int> l = new List<int>();
for (int i = 1; i <= 10; i++)
{
l.Add(i);
}
_ll.DataSource = new ObjectDataProvider(l);
_ll.AutoDefineNewLine += new AutoDefineNewLineHandler(LL_AutoDefineNewLine);
_ll.Design();
}
void LL_AutoDefineNewLine(object sender, AutoDefineNewLineEventArgs e)
{
_ll.Fields.Add("Field1", "Field 1");
_ll.Fields.Add("Test.Einheit", "Einheit");
_ll.Fields.Add("Test.Wert", 1234);
}