2012-02-17 37 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