如何在 C# 中为活动报告覆盖 rpx 文件的数据源?

How to overwrite datasource of rpx file for active reports in c#?

默认情况下,我有一个带有数据源的 rpx 文件。我想加载它并检查用户是否想使用不同的数据源。我已经覆盖了 SectionReport 对象的数据源并在将其发送给 loadlayout 方法之前执行 reader。我是否需要将字段与文本框映射,或者我是否缺少更改数据源的内容。

如果新数据源具有与原始数据源不同的字段(列),则您需要在报表的字段集合中添加字段,并将文本框的数据字段 属性 更改为新字段以显示新数据。查看以下文档中的 'To use an Unbound data source' 主题 link:http://arhelp.grapecity.com/webhelp/AR11/index.html#BindReportstoaDataSource.html

编辑: 您可以通过以下方式仅更改报表数据源的连接字符串:

SectionReport rpt = new SectionReport();
XmlTextReader xtr = new XmlTextReader("../../Invoice1.rpx");
rpt.LoadLayout(xtr);            

var dataSource = rpt.DataSource as GrapeCity.ActiveReports.Data.OleDBDataSource;
dataSource.ConnectionString = @"Provider = Microsoft.Jet.OLEDB.4.0; Data Source =C:\BILL.mdb; Persist Security Info = False";

rpt.Run();

viewer1.LoadDocument(rpt);