2013-06-11 4 views
3

У меня возникла проблема при создании отчетов.Создание отчета из строки rdlc xml

Я должен сгенерировать отчет динамически, используя все данные из базы данных для него (имя источника и RDLC отчет, который хранит как XML-строки)

Так я решил проблему следующим способом:

  1. Создать локальный файл RDLC с строка отчета xml;
  2. Установить путь к файлу;

    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 и установить путь к нему? Не могли бы вы порекомендовать лучший способ?

Спасибо

ответ

4

Да, Вы можете предоставить ему объект StringReader используя LoadReportDefinition как так,

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 из определения отчета.

Смежные вопросы