Domanda

Sto usando DevExpress XtraReports in un'applicazione WinForms, ma potrebbe applicarsi anche ad altri strumenti di reporting.

Mi piacerebbe eseguire una logica per-riga del rapporto in quanto è "resa", su base riga per riga. In particolare mi piacerebbe nascondere un codice a barre, se i dati del codice a barre non è disponibile.

Al momento sto facendo il seguente:

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

Ma che appena odori pianura male. Mi piacerebbe accedere alla riga di dati corrente in questo metodo e lavorare sulle proprietà "reali" dell'oggetto, ma non ci riesco. Qual è il modello tipico per questo in altri generatori di report? Sto anche utilizzando l'evento corretto? Ho provato Detail_BeforePrint, ma che non ha avuto ulteriori informazioni.

È stato utile?

Soluzione

Usa Detail_BeforePrint in combinazione con GetCurrentColumnValue () in questo modo:

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;
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top