以下是该场景:我有许多不同的报告文件(* .rdl),用户可以从Web界面中选择一个。反过来,它会加载一个Report Viewer控件(作为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.
}
答案 0 :(得分:0)
如果您使用的是.RDL文件,则需要使用Viewer.ServerReport
。它将使用报表定义中的数据源,而无需显式设置数据源。
Viewer.LocalReport
用于.RDLC文件,其中设置数据源是在代码中手动设置的,如代码示例所示。