【问题标题】:Why crystal report not refresh the parameters automatically?为什么水晶报表不自动刷新参数?
【发布时间】:2022-06-22 09:19:01
【问题描述】:

我在 asp.net 中使用这段代码来运行水晶报表:

paramField.Name = "@ORDER_ID";
                        paramDiscreteValue.Value = TXTORDERID.Text.ToString();
                        paramField.CurrentValues.Add(paramDiscreteValue);
                        paramFields.Add(paramField);

                        paramField = new ParameterField(); // <-- This line is added
                        paramDiscreteValue = new ParameterDiscreteValue();  // <-- This line is added
                        paramField.Name = "@branch_id";

                        paramDiscreteValue1.Value = TXTDEPTID.Text.ToString();
                        paramField.CurrentValues.Add(paramDiscreteValue1);
                        paramFields.Add(paramField);

                        CrystalReportViewer1.ParameterFieldInfo = paramFields;
                        CrystalReportViewer1.ReuseParameterValuesOnRefresh = false;
                        CrystalReportViewer1.ToolPanelView = CrystalDecisions.Web.ToolPanelViewType.None;
                        reportDocument.Load(Server.MapPath("~/RPT/RPTCCOVIDRESULTS.rpt"));

                       
                        CrystalReportViewer1.ReportSource = reportDocument;
                        CrystalReportViewer1.RefreshReport();

当我删除这行代码时,它总是自动运行相同的报告:

CrystalReportViewer1.RefreshReport();

当我添加这一行时,它总是询问参数。

如何在不每次都询问订单和分支 id 的情况下自动引用报告并运行报告,我对此感到困惑,需要您的帮助。 看图片,谢谢

【问题讨论】:

    标签: c# asp.net asp.net-mvc crystal-reports


    【解决方案1】:

    尝试使用此代码

    repDocument.SetParameterValue("@ORDER_ID", TXTORDERID.Text);
    

    这是完整的解决方案,而不是参数字段,适合我

                            var connectionInfo = new ConnectionInfo();
                            connectionInfo.ServerName =   "server_name";
                            connectionInfo.DatabaseName = "database_name";
                            connectionInfo.Password = "password";
                            connectionInfo.UserID = "user_name";
                            connectionInfo.Type = ConnectionInfoType.SQL;
                            connectionInfo.IntegratedSecurity = false;
                            ReportDocument repDocument = new ReportDocument();
                            repDocument.Load(Server.MapPath("~/report.rpt"));
                            repDocument.SetParameterValue("@ORDER_ID", TXTORDERID.Text);
                            repDocument.SetParameterValue("@branch_id", TXTBRANCHID.Text);
    
                            repDocument.SetDatabaseLogon("user_name", "password");
                            CrystalReportViewer1.ReportSource = repDocument;
                            CrystalReportViewer1.DataBind();
                            for (int i = 0; i < CrystalReportViewer1.LogOnInfo.Count; i++)
                            {
                                CrystalReportViewer1.LogOnInfo[i].ConnectionInfo = connectionInfo;
                            }
    

    【讨论】:

    • 感谢您使用此解决方案
    【解决方案2】:

    尝试使用 api 查看器核心;)

    CrystalReportViewer1.ViewerCore.ReuseParameterWhenRefresh = true;
    

    在调用 RefreshReport() 方法之前,然后

    CrystalReportViewer1.ReportSource = reportDocument;
    CrystalReportViewer1.RefreshReport();
    

    它对我有用!

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多