C# 从主报告传递参数时,DevExpress XtraReport主详细信息子报告异常

C# 从主报告传递参数时,DevExpress XtraReport主详细信息子报告异常,c#,exception,devexpress,subreport,xtrareport,C#,Exception,Devexpress,Subreport,Xtrareport,我正在通过DevExpress 14.1.4制作子报告 我有XtraReport1,它和Orders表绑定在一起 XtraReport2,将其与OrderDetails表绑定 XtraReport2具有参数oID,文件管理器详细信息(按顺序) 在XtraReport1的beforePrint事件中,我确实喜欢本教程: private void xrLabel1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)

我正在通过DevExpress 14.1.4制作子报告

我有XtraReport1,它和Orders表绑定在一起 XtraReport2,将其与OrderDetails表绑定 XtraReport2具有参数oID,文件管理器详细信息(按顺序)

在XtraReport1的beforePrint事件中,我确实喜欢本教程:

private void xrLabel1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
        {
            int n = Convert.ToInt32(GetCurrentColumnValue("MaKhoa"));
            ((XtraReport2)((XRSubreport)sender).ReportSource).MK.Value = n;
        }
但是它的投掷

An unhandled exception of type 'System.InvalidCastException' occurred in WindowsFormsApplication1.exe

Additional information: Unable to cast object of type 'DevExpress.XtraReports.UI.XRLabel' to type 'DevExpress.XtraReports.UI.XRSubreport'.

原因:
您处理了错误控件的BeforePrint事件。您正在处理XRLabel1事件,因此发送方将是XRLabel,并且您正在尝试将其强制转换为XRSubReport,因此出现以下错误:

private void xrLabel1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
    int n = Convert.ToInt32(GetCurrentColumnValue("MaKhoa"));
    ((XtraReport2)((XRSubreport)sender).ReportSource).MK.Value = n; // you have error here
}
您应该在打印事件之前处理子报表以设置值,请检查以下代码段:

using System.Drawing.Printing;
// ... 

private void xrSubreport1_BeforePrint(object sender, PrintEventArgs e) {
    ((XtraReport2)((XRSubreport)sender).ReportSource).CatID.Value = 
        Convert.ToInt32(GetCurrentColumnValue("CategoryID"));
}
我建议您按照以下文档链接正确制作主详细信息报告:



是的,我也遵循了它,但我没有仔细查看beforePrint所有者,所以我犯了错误:3