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

时间:2009-09-28 23:43:35

标签: c# devexpress subreport xtrareport

我有一个未绑定的XtraReport,它有一个子报表控件,其中包含另一个报表。我将“unbound”称为使用模式定义字段但实际上并未绑定到任何DataSet的报表,我使用数据访问层创建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.");
        }

但是我使用这种方法得到的是非常奇怪地打印的子报告(看看attached pdf,对不起它是西班牙语,但我想你明白了。)

我已经阅读了DevExpress文档,也许我没有正确使用该方法,所以我的问题是如何创建一个包含一个或多个子报表的报表,但是我必须使用一些子报表提供数据来填充它们报告外部的过程,例如数据访问层?

如果问题没有正确陈述或缺乏更多信息,请告诉我。

编辑:

我上传了一个包含问题here的报告的示例项目。

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

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

((XRSubreport)sender).ReportSource.Parameters["Id"].Value = _idPurchaseOrder;

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

1 个答案:

答案 0 :(得分:3)

我可以解决问题。

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

report.SubPurchaseOrder.Report.DataSource = tableSubReport;

应该是:

report.SubPurchaseOrder.ReportSource.DataSource = tableSubReport;

所以简要说明是我使用另一个属性来引用子报表控件(XRSubreport)中包含的报表。