2012-02-17 105 views
3

我有两个按钮(button1,button2) 这两个按钮打开两个相同的报告,除了report2.rdlc有一个字符串参数LocalReport.SetParameters异常尝试设置报告参数'ParameterName',这个报告中没有定义

如果我按下按钮1个第一消息框中显示参数计数= 0(如预期),我得到在reportviewer1 report1.rdlc显示如果然后我按下按钮2个消息框中显示参数计数= 0再次(我期望它显示1),我得到LocalProcessingException {“试图设置报表参数'Report2ParameterString'是本报告中没有定义。“}

如果我按下BUTTON2第一消息框中显示参数计数= 1(如预期)和我得到在reportviewer1 显示报告2如果然后我按下按钮1 消息框中显示参数计数= 1再次(我希望它显示0)加载新的R之前,我得到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(); 
    } 

回答

5

呼叫ReportViewer.Reset()扩展端口。

例如:

reportViewer1.Reset(); 
reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\report2.rdlc"; 
... 
+0

**非常感谢** – 2012-02-18 07:02:10

+0

当我添加Reportviewer.Reset()我的代码它给我错误的报表,定义--The源尚未specified-- – gbbosmiya 2013-03-08 11:54:50

+0

可能最好提出一个新的问题 – 2013-03-09 10:33:18