Hallo zusammen,
Folgender Bug hat mich die letzte Zeit beschäftigt bis ich ihn auf die Schliche gekommen bin. Er ist sowohl mit der letzten v28 als auch v29 nachstellbar.
In unserer .NET WPF-App haben wir den Report-Designer/Druck-Designer integriert und darin habe ich folgenden Druck erstellt:
Darin ist ein einfacher Berichtscontainer der die Tabelle “Texts” anzeigt (roter Pfeil) deren Felder im roten Rechteck zu sehen sind. Sonst hat der Audruck nichts.
Die Tabelle hat eine Darstellungsbedingung (grünes Rechteck): “not IsNullOrEmpty(Texts.Longtext1)”.
Diese ergibt defaultmäßig False/Nicht anzeigen (orange Rechtecke). Dies geschieht, weil die Daten/Beispieldaten die für den Designer zur Verfügung gestellt werden alle Strings mit string.Empty liefert.
Drucke ich nun das Design mit echten Daten (bzw. rufe die Vorschau ausserhalb des Druckdesigners auf) wird die Tabelle nicht angezeigt, obwohl Texts.Longtext1 einen Text enthält.
Debuggen hat ergeben, dass L&L die Daten bei uns gar nicht anfragt um die Darstellungsbedingung auswerten zu können!
Im Detail wird ITableRow.GetChildTable(…) nicht gerufen.
Füge ich im selben Design dieselbe Tabelle nochmal ohne Darstellungsbedingung ein, wird natrülich diese neu angezeigt, aber auch die mit der Darstellungbedingung! Weil eben die neue Tabelle die Daten anfragt und dann die Darstellungsbedingung richtig ausgewertet wird.
Imho ist das ein Bug von L&L…oder mache ich doch etwas falsch?
Ich habe bereits hier gesucht und LL-Designer 27 - Darstellungsbedingung Tabelle - #3 by Klaus_Schwarz als auch Darstellungsbedingung mit Ausgabe - #3 by mlitkin gefunden und gelesen.
Somit kenne ich die Option LL.Core.LlSetOption(LlOption.DelayTableHeader, 0); , welche dasselbe Ergebnis in dem Beispiel liefern würde, aber das Beispiel hier ist nur zu Demozwecken. Am Ende ist meine Darstellungsbedingung komplizierter und diese Option würde nicht zum gewünschten Ergebnis führen.
Danke für die Hilfestellung!
PS: Interessante Side-Note:
Im Screenshot sieht man ja in den orangen Rechtecken, dass der Designer die Darstellungsbedingung autom. mit FALSE auswertet. Weil wir ja im Designer immer alle Strings mit String.Empty übergeben.
Ändere ich dies - liefere ich also zB “Text” - steht im Designer TRUE/Anzeigen in den orangen Rechtecken und alles Funkt wie es sein soll!
Heisst: DIe Tabelle wird angezeigt, und die Daten werden von L&L bei unserer Source auch angefragt um die Darstellungsbedingung auszuwerten.