あなたと同じように、ReportViewer で LocalReport を表示できるようにしたいと考えていました。
ここで私がこれをどのように達成したか:
Param_MyLocalReportは、[.Render で] うまく機能している LocalReport です。 ReportViewer1は、レポートを表示したい ReportViewer です。この機能は自動で、データソースとパラメータをコピーします。
//****************************
//assign report Path
reportViewer1.LocalReport.ReportPath = param_MyLocalReport.ReportPath;
//****************************
//****************************
//assign data-sources
foreach (ReportDataSource MyDS in param_MyLocalReport.DataSources)
reportViewer1.LocalReport.DataSources.Add(MyDS);
//****************************
//****************************
//Assign parameters
//get a list of actual parameters in the report, with the actual assigned value
ReportParameterInfoCollection MyOrigParams = param_MyLocalReport.GetParameters(); //I didn't find simpler way to fetch params...
//create a List of parameter [to feed the reportViewer]
List<ReportParameter> MyListOfPArams = new List<ReportParameter>();
//for each params found through GetParameters(), add it to the List<> of params
for (int i = 0; i < MyOrigParams.Count; i++)
MyListOfPArams.Add(new ReportParameter(MyOrigParams[i].Name, MyOrigParams[i].Values[0]));
//final assignation of the parameters
reportViewer1.LocalReport.SetParameters(MyListOfPArams);
//****************************
//show the report
reportViewer1.RefreshReport();
エルニーニョが言及したように、これはヘルパー関数でプッシュできます。何かのようなもの :
Private void Convert_LocalReport_To_ReportViewer(LocalReport Param_MyLocalReport, ReportViewer param_MyReportViewer)
{
...copy the same code here...
}