Question

J'utilise DevExpress XtraReports dans une application WinForms, mais pourrait également appliquer à d'autres outils de reporting.

Je voudrais effectuer une certaine logique par ligne dans le rapport comme il est « rendu », sur une base ligne par ligne. Plus précisément, je voudrais cacher un code-barres si les données pour le code-barres ne sont pas disponibles.

Actuellement, je fais ce qui suit:

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

Mais que tout simplement mauvais odeurs. Je voudrais accéder aux données actuelles ligne dans cette méthode et sur les propriétés « réelles » de l'objet, mais ne peut pas. Quel est le modèle typique pour cela dans d'autres générateurs de rapports? Suis-je même en utilisant l'événement correct? J'ai essayé Detail_BeforePrint, mais cela n'a pas d'information supplémentaire.

Était-ce utile?

La solution

Utilisation Detail_BeforePrint conjointement avec GetCurrentColumnValue () comme ceci:

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;
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top