1

我在 WinForms 应用程序中使用 DevExpress XtraReports,但同样可以应用于其他报告工具。

我想在报告中逐行执行一些逻辑,因为它是“渲染”的。具体来说,如果条码的数据不可用,我想隐藏条码。

目前我正在做以下事情:

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

但这只是闻起来很糟糕。我想访问此方法中的当前数据行并处理对象的“真实”属性,但不能。在其他报告生成器中,这种情况的典型模式是什么?我什至使用正确的事件吗?我试过Detail_BeforePrint了,但没有其他信息。

4

1 回答 1

4

将 Detail_BeforePrint 与 GetCurrentColumnValue() 结合使用,如下所示:

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;
    }
}
于 2009-05-07T13:52:36.613 回答