场景如下:我有许多不同的报告文件 (*.rdl),用户可以从 Web 界面中选择一个。反过来,这会加载报表查看器控件(作为 ASPX 控件)。
我的 *.rdl 文件在定义中同时包含数据源和数据集(为了确定,我在记事本中检查了 XML)。数据源是 Oracle 存储过程。如果我在 Report Builder 3 中运行报告,它运行得很好。
我不明白的是如何在运行时将报表文件加载到报表查看器中,并让它自动使用报表定义中定义的数据源和数据集。
try
{
Viewer.LocalReport.ReportPath = myLocalRDLPath; // Exists and is readable
var reader = new StringReader(File.ReadAllText(myLocalRDLPath));
Viewer.LocalReport.LoadReportDefinition(reader);
}
catch(Exception ex)
{
throw new Exception("Unable to open report definition file from server.", ex);
}
if (Viewer.LocalReport.DataSources.Count > 0)
{
// Never hits, DataSources is always empty, but
// a Data Source and a Dataset exist in the .rdl file.
}