基于新的RDLC文件重新加载和刷新报表查看器

6
我用VS 2008编写了一个C#程序,使用内置的报告查看器并在本地处理报告。
当查看报告时,我想要替换当前的rdlc文件并刷新报告,而不关闭包含报告查看器的报告表单。
我已经检查过确保文件生成正确。如果我关闭具有报告查看器的表单并重新打开它,则会显示新文件信息。我只是无法弄清如何重新加载报告查看器而不关闭父表单。
以下是我已经尝试过的内容。我没有收到错误消息。报告似乎刷新了,但实际上它只是显示了我已经在查看的内容。新的RDLC文件没有被加载。
private void BtnRefreshRpt_Click(object sender, EventArgs e)
    {

        try
        {

            GenerateNewRDLC GN = new GenerateNewRDLC();
            GN.generateFile();  /*this part definitely works*/


            SqlConnection conReport = new SqlConnection     (ConfigurationManager.ConnectionStrings["Connection String Info"].ConnectionString);
            SqlCommand cmdReport = new SqlCommand();
            SqlDataReader drReport;
            DataSet dsReport = new AdvEdgeDataSet();

            conReport.Open();

            cmdReport.CommandType = CommandType.Text;
            cmdReport.Connection = conReport;
            cmdReport.CommandText = strRptCriteria;

            drReport = cmdReport.ExecuteReader();

            dsReport.Tables[0].Load(drReport);

            drReport.Close();
            conReport.Close();

            reportViewer1.LocalReport.ReportPath = strRptResource.ToString();


            ReportDataSource rds = new ReportDataSource();
            rds.Name = strRptDataSource;
            rds.Value = dsReport.Tables[0];
            reportViewer1.LocalReport.DataSources.Add(rds);
            reportViewer1.RefreshReport();
            reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);

            //this.reportViewer1.RefreshReport();

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }
1个回答

14

在加载新的报表文件之前,尝试调用ReportViewer.Reset()方法。

我目前正在我的ReportViewer控件中执行这个操作,但是源代码在工作中。如果Reset方法不起作用,我将在周一早上在此发布我的代码。这绝对是可行的。


1
这个很好用。非常感谢您的帮助,非常感激。我刚刚添加了:this.ReportViewer.Reset(); 在我的“生成新文件”代码之后,在我的SQL连接代码之前。这非常完美,谢谢。 - JK.
1
我在远程报告方面也遇到了同样的问题。这个答案仍然适用。谢谢! - LOAS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接