从rdlc xml字符串生成报告

提问

生成报告时遇到问题.

我应该使用数据库中的所有数据动态生成报告(源名称和rdlc报告,以xml字符串存储)

所以我以另一种方式解决了问题:

>使用报告xml字符串创建本地rdlc文件;
>设置文件的路径;

var rViewer = new ReportViewer();
rViewer.LocalReport.ReportPath = @"Path to the generated xml rdlc file";
var dataSource = new ReportDataSource("DataSourceName", data);
rViewer.LocalReport.DataSources.Add(dataSource);

我可以在代码后面直接指定Report XML String,而不是生成rdlc文件并为其设置路径吗?您能推荐一种更好的方法吗?

谢谢

最佳答案

是的,您可以像这样使用LoadReportDefinition为它提供一个StringReader对象,

private void Page_Load(object sender, System.EventArgs e)
{
    NMBS.ViewModels.ViewModelReport Report = (Session["CurrentReport"] as NMBS.ViewModels.ViewModelReport);
ReportViewer.ProcessingMode = ProcessingMode.Local;
ReportViewer.PageCountMode = PageCountMode.Actual;

// Set report specifics.
ReportViewer.LocalReport.DisplayName = Report.Name;
ReportViewer.LocalReport.LoadReportDefinition(new System.IO.StringReader(Report.Definition));
foreach (ReportParameter Param in Report.Parameters)
{
    ReportViewer.LocalReport.SetParameters(Param);
}
foreach (ReportDataSource Rds in Report.Data)
{
    //Load Report Data.
    ReportViewer.LocalReport.DataSources.Add(Rds);
}
ReportViewer.CurrentPage = Report.CurrentPage;
ReportViewer.Width = Report.Width;

// Refresh the reports.
ReportViewer.LocalReport.Refresh();
}

其中Report.Defintion是包含报告定义的XML的字符串.