2009-04-01 7 views
0

Ich verwende DevExpress XtraReports in einer WinForms-Anwendung, könnte aber auch für andere Berichttools verwendet werden.Werte bei der Datenbindung aus der aktuellen Zeile beziehen

Ich möchte einige Logik pro Zeile im Bericht ausführen, wie es Zeile für Zeile gerendert wird. Insbesondere möchte ich einen Barcode ausblenden, wenn die Daten für den Barcode nicht verfügbar sind.

Derzeit mache ich folgendes:

private void xrBarCode2_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) 
{ 
    var barcode = (XRBarCode)sender; 

    if (barcode.Text.Trim() == "") 
    { 
     barcode.Visible = false; 
     lblWarning.Visible = true; 
    } 
    else 
    { 
     barcode.Visible = true; 
     lblWarning.Visible = false; 
    } 
} 

Aber das nur riecht nur schlecht. Ich möchte in dieser Methode auf die aktuelle Datenzeile zugreifen und an den "echten" Eigenschaften des Objekts arbeiten, kann aber nicht. Was ist das typische Muster dafür in anderen Berichtsgeneratoren? Benutzt ich überhaupt das richtige Ereignis? Ich habe versucht Detail_BeforePrint, aber das hatte keine zusätzlichen Informationen.

Antwort

4

Detail_BeforePrint Verwenden in Verbindung mit GetCurrentColumnValue() wie folgt:

private void Detail_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) { 
    if (string.IsNullOrEmpty(GetCurrentColumnValue("BarcodeColumnName"))) { 
     barcode.Visible = false; 
     lblWarning.Visible = true; 
    } else { 
     barcode.Visible = true; 
     lblWarning.Visible = false; 
    } 
} 
Verwandte Themen