清除Crystal报表参数

时间:2013-12-10 16:18:15

标签: c# asp.net crystal-reports

使用Visual Studio 2010和Crystal Reports 13.0。

对于报告,提示用户输入值。然后生成报告没有问题。

如果用户离开report.aspx页面并返回运行另一个报告,则提示不会显示,并且上次运行的报告仍然存在,其中包含用户的原始值。

寻找解决方案,发现的只有两个不起作用:

 //After the report loads
 CrystalReportSource1.ReportDocument.ParameterFields.Clear();

错误:

您无法使用此方法添加,删除或修改参数字段。请直接修改报告。

直接修改报告:

右键单击Crystal Report的正文 然后转到:

设计 - >默认设置.. - >报告

选中复选框

加载报告时丢弃已保存的数据。

这不起作用。上一份报告仍然填充。

所以,我现在要求对如何解决这个问题有所了解。

一如既往,欢迎任何建议。

由于

编辑:

以下是报告页面背后的代码。许多报告使用此页面....

            CrystalReportSource1.Report.FileName = "reports\\" + fileName + ".rpt";

            //CrystalReportSource1.Report.Parameters.Clear();
            //CrystalReportSource1.Report = null;
            //CrystalReportSource1.Report.Refresh();

            if (!string.IsNullOrEmpty(Request.QueryString["item"]))
            {
                String Item = Request.QueryString["item"];
                CrystalDecisions.Web.Parameter temp = new CrystalDecisions.Web.Parameter();
                temp.Name = "Item";
                temp.DefaultValue = Item;
                CrystalReportSource1.Report.Parameters.Add(temp);
            }

            SqlConnectionStringBuilder settings = new SqlConnectionStringBuilder(MyConnectionString);

            _crReportDocument = CrystalReportSource1.ReportDocument;
            _crConnectionInfo.ServerName = settings.DataSource;
            _crConnectionInfo.DatabaseName = settings.InitialCatalog;
            _crConnectionInfo.UserID = settings.UserID;
            _crConnectionInfo.Password = settings.Password;

            //Get the table information from the report
            _crDatabase = _crReportDocument.Database;
            _crTables = _crDatabase.Tables;

            //Loop through all tables in the report and apply the
            //connection information for each table.
            for (int i = 0; i < _crTables.Count; i++)
            {
                _crTable = _crTables[i];
                _crTableLogOnInfo = _crTable.LogOnInfo;
                _crTableLogOnInfo.ConnectionInfo = _crConnectionInfo;
                _crTable.ApplyLogOnInfo(_crTableLogOnInfo);
            }

2 个答案:

答案 0 :(得分:0)

您可以尝试在Page_Unload事件中使用它。

Report.Close();
Report.Dispose();

当页面被卸载时,应该删除报告,当用户返回页面时,您将重新开始。 这篇文章中有一个很好的例子here

答案 1 :(得分:0)

我找到了解决方案!!!! --------不

在我上面的问题中的所有代码之前添加此行:

 CrystalReportViewer1.ParameterFieldInfo.Clear();

然后加载文件名等等.......