4

レポートの生成時に問題に直面しています。

データベースのすべてのデータを使用してレポートを動的に生成する必要があります (ソース名と xml 文字列として保存される rdlc レポート)

だから私は次の方法で問題を解決しました:

  1. レポート xml 文字列を含むローカル rdlc ファイルを作成します。
  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);
    

rdlc ファイルを生成してパスを設定する代わりに、コード ビハインドで Report XML String を直接指定できますか? より良い方法をお勧めできますか?

ありがとうございました

4

1 に答える 1

5

はい、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 を含む文字列です。

于 2013-06-12T17:35:58.770 に答える