C# 如何在另一个未绑定报表中创建未绑定子报表

C# 如何在另一个未绑定报表中创建未绑定子报表,c#,devexpress,subreport,xtrareport,C#,Devexpress,Subreport,Xtrareport,我有一个未绑定的XtraReport,它有一个子报表控件,其中包含另一个报表。我调用“unbound”到一个报表,该报表使用模式定义了字段,但实际上没有绑定到任何数据集,我使用数据访问层创建了一个DataTable,然后将该对象传递给报表的DataSource属性 因此,我有以下代码: // (...) Get the data from the db and fill a DataTable if (table.Rows.Count > 0)

我有一个未绑定的XtraReport,它有一个子报表控件,其中包含另一个报表。我调用“unbound”到一个报表,该报表使用模式定义了字段,但实际上没有绑定到任何数据集,我使用数据访问层创建了一个DataTable,然后将该对象传递给报表的DataSource属性

因此,我有以下代码:

        // (...) Get the data from the db and fill a DataTable

        if (table.Rows.Count > 0)
        {
            report.DataSource = table;

            // (...) Get the data from the db and fill a DataTable for the subreport
            report.SubPurchaseOrder.Report.DataSource = tableSubReport;

            report.ShowPreviewDialog();
        }
        else
        {
            MessageBox.Show("No data to show.");
        }
但我使用这种方法得到的是打印得非常奇怪的子报告(请看一下,很抱歉,它是西班牙语的,但我想你明白了)

我已经阅读了DevExpress文档,可能我没有掌握正确的方法,所以我的问题是如何创建一个包含一个或多个子报表的报表,但我必须使用报表外部的某些流程(如数据访问层)提供数据来填充报表

如果问题陈述不正确或缺少更多信息,请告诉我

编辑:

我上传了一个带有问题报告的示例项目

我尝试过使用某种参数。在子报表控件的BeforePrint事件中,我尝试了:

((XRSubreport)sender).ReportSource.FilterString = "[IdPO_RO] = " + _idPurchaseOrder;


当然,对于第二个,我添加了一个与第一个相同的参数和过滤器字符串,但使用了该参数。

我可以解决这个问题

原因是我分配给了错误的对象。这一行:

report.SubPurchaseOrder.Report.DataSource = tableSubReport;
应该是:

report.SubPurchaseOrder.ReportSource.DataSource = tableSubReport;

因此,简单的解释是,我使用了另一个属性来引用子报表控件(XRSubreport)中包含的报表。

问题是子报表重复了16次还是数据没有绑定到标签?是的,数据没有显示在标签中。但正如您看到的,对于没有数据源的标签,子报表是绑定的。另一件事:当我调用子报表而不在主报表中时,它会显示标签中的所有数据。
report.SubPurchaseOrder.ReportSource.DataSource = tableSubReport;