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

Komisches Verhalten / Bugreport


(Guest) #1

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);
        }

(Guest) #2

Hallo,

denke das Problem kommt daher, dass die Tabelle bei List & Label mit dem Namen “Int32” angemeldet wird (dem Typnamen des Listeninhalts). Innerhalb einer Tabelle können nur Felder verwendet werden, die zur aktuellen Tabelle passen, deswegen wird alles mit . ausgefiltert, solange nicht “Int32” ist. Ich meine mich zu erinnern, dass der ObjectDataProvider ein Property “RootTableName” oder so hat. Wenn Du das auf “Test” setzt, werden alle Felder angeboten werden, die mit “Test.” anfangen - das sollte helfen.

G.


(Guest) #3

Hallo Dr. Schwarze

Vielen Dank für den Tipp. Das war die Lösung.

Freundliche Grüsse
Niccolo