2つのボタン(button1、button2)があります。report2.rdlcに文字列パラメーターがあることを除いて、2つのボタンで2つの同じレポートが開きます。
最初にbutton1を押すと、メッセージボックスにパラメータ数が表示されます= 0(期待どおり)、report1.rdlcがreportviewer1に表示されます。次に、ボタン2を押すと、メッセージボックスにパラメータ数が表示されます= 0になります(1が表示されると思います)。 LocalProcessingException{"このレポートで定義されていないレポートパラメータ'Report2ParameterString'を設定しようとしました。"}
最初にbutton2を押すと、メッセージボックスにパラメータ数が表示されます= 1(期待どおり)、reportviewer1にreport2が表示されます。次に、button1を押すと、メッセージボックスにパラメータ数が1つ表示されます(0が表示されると思います) 。report1が表示されます。 .rdlcは例外なくreportviewer1に表示されます
私のコードは
private void report1Button_Click(object sender, EventArgs e)
{
reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\report1.rdlc";
MessageBox.Show("parameters count =" + reportViewer1.LocalReport.GetParameters().Count.ToString());
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", reportDataTable));
reportViewer1.RefreshReport();
}
private void report2Button_Click(object sender, EventArgs e)
{
reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\report2.rdlc";
MessageBox.Show("parameters count =" +reportViewer1.LocalReport.GetParameters().Count.ToString());
reportViewer1.LocalReport.SetParameters(new ReportParameter("Report2ParameterString", " testing Report2ParameterString"));
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", reportDataTable));
reportViewer1.RefreshReport();
}