加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 08:29:18 所属栏目:百科 来源:网络整理
导读:我使用VS 2008编写了一个C#程序,它使用内置的Report Viewer并在本地处理报告. 在查看报表时,我想用新的rdlc文件替换当前的rdlc文件并刷新报表而不关闭包含报表查看器的报表. 我已经检查过以确保正确生成文件.如果我使用报表查看器关闭表单并将其打开备份,则
我使用VS 2008编写了一个C#程序,它使用内置的Report Viewer并在本地处理报告.

在查看报表时,我想用新的rdlc文件替换当前的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);
        }
    }

解决方法

尝试在加载新报告文件之前调用ReportViewer.Reset().

我目前正在我的ReportViewer控件中执行此操作,但是,源代码正在运行.如果重置不起作用,我将在周一早上在此处发布我的代码.绝对可以做到.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读