Исключение LocalReport.SetParameters Была предпринята попытка установить параметр отчета "ParameterName", который не определен в этом отчете.
У меня есть две кнопки (button1, button2) две кнопки открывают два идентичных отчета, за исключением того, что report2.rdlc имеет строковый параметр
если я нажал кнопку 1, сначала в окне сообщения отобразится количество параметров = 0 (как и ожидалось), и в reportviewer1 отобразится отчет1.rdlc, если я нажал кнопку 2, в окне сообщения снова отобразится количество параметров = 0 (я ожидаю, что он покажет 1) и я получаю LocalProcessingException {"Была сделана попытка установить параметр отчета 'Report2ParameterString', который не определен в этом отчете."}
если я сначала нажал кнопку 2, в окне сообщения отображается количество параметров = 1 (как и ожидалось), и я получаю отчет 2, отображаемый в reportviewer1, если затем я нажал кнопку 1, в окне сообщения снова отображается количество параметров = 1 (я ожидаю, что он покажет 0), я получаю отчет 1.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();
}
1 ответ
Вызов ReportViewer.Reset()
перед загрузкой нового отчета.
Например:
reportViewer1.Reset();
reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\report2.rdlc";
...