我在项目中使用devexpress xtrareports v.15 for winforms。
我有发票报告。它里面有一些文本字段和一个列表。我将数据连接到report ctor中的源:
public InvoiceReport(InvoiceCommonData icd, List<ReportPosition> positions)
{
InitializeComponent();
this.ReportCommonDataSource.DataSource = icd;
this.positionsList.DataSource = positions;
}
当我打印报表时,因为它是在Visual Studio中创建的,数据是以正确的方式连接的。 但我需要为此报告加载不同的布局。我将报表布局存储为repx文件,并尝试在运行时从文件加载它:
InvoiceReport report = new InvoiceReport(model.GetCommonData(), model.GetPositions());
var filename = "D://InvoiceReport.repx";
report.LoadLayout(filename);
当我打印报告时,我看到公共数据(icd
)被绑定并被打印但是列表(positions
)没有绑定,它是空表而不是真实数据。
问题是如何从文件加载xtrareport布局并保存所有数据连接?
答案 0 :(得分:0)
但是我认为你可以尝试将默认repx文件的连接替换为主连接,因为当我们从报表设计器创建repx文件时我们设置连接并且当我们尝试使用查看器文件预览报表时将repx保存为默认值保存连接,所以尝试从所需的sql连接替换连接。
喜欢if (((DevExpress.DataAccess.Sql.SqlDataSource)devxReport.DataSource).ConnectionParameters != null) //change if connection exists in report
{
((DevExpress.DataAccess.Sql.SqlDataSource)devxReport.DataSource).ConnectionParameters = null;
}
((DevExpress.DataAccess.Sql.SqlDataSource)devxReport.DataSource).ConnectionParameters =
new DevExpress.DataAccess.ConnectionParameters.CustomStringConnectionParameters(sqlConnectionString);