如何将SSRS报告动态加载到报告查看器中并包含数据源/数据集?

时间:2013-07-12 17:52:34

标签: c# asp.net reporting-services rdl

以下是该场景:我有许多不同的报告文件(* .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.
}

1 个答案:

答案 0 :(得分:0)

如果您使用的是.RDL文件,则需要使用Viewer.ServerReport。它将使用报表定义中的数据源,而无需显式设置数据源。

Viewer.LocalReport用于.RDLC文件,其中设置数据源是在代码中手动设置的,如代码示例所示。