为什么 crystal 报告没有出现也没有显示?

Why the crystal report not appear and no show?

我创建了一个 crystal 报告和网页,我想在我的网页中打开 crystal 报告取决于文本框值,我需要在单击按钮时将值发送到 crystal 报告以显示我的 crystal 报告。 我尝试了以下代码,并将数据源和连接设置为数据库:

protected void Button1_Click(object sender, EventArgs e)
    {
        rdoc.Load(Server.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));
        SqlCommand cmd = new SqlCommand("GET_ORDER_RESULT_PRINT_CASH", cn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.AddWithValue("@ORDER_ID", TXTORDERID.Text);
        cmd.Parameters.AddWithValue("@deptid", TXTDEPTID.Text);
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        rdoc.SetDataSource(dt);
        CrystalReportViewer1.ReportSource = rdoc;
        CrystalReportViewer1.DataBind();

        rdoc.SetDatabaseLogon("DBA", "1234");

    }
}

单击按钮时,它不显示报告,只显示空白屏幕。如何显示报告错误在哪里?

我尝试了另一种解决方案,但是当单击打印按钮时它不显示 crystal 仅报告空白页怎么办我尝试了本网站和其他网站提供的许多解决方案???

protected void BtnCrystal_Click(object sender, EventArgs e)
        {
            if (Session["patientno"] != null && Convert.ToInt32(Session["patientno"]) > 0)
            {
ReportDocument reportDocument = new ReportDocument();

                ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterField paramField1 = new ParameterField();
                ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
                ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();
                paramField.Name = "@ORDER_ID";
                paramDiscreteValue.Value =Convert.ToInt32(TXTORDERID.Text);
                paramField.CurrentValues.Add(paramDiscreteValue);
                paramFields.Add(paramField);



                paramField1.Name = "@deptid";
                paramDiscreteValue1.Value =Convert.ToInt32(TXTDEPTID.Text);
                paramField1.CurrentValues.Add(paramDiscreteValue1);
                paramFields.Add(paramField1);

                CrystalReportViewer1.ParameterFieldInfo = paramFields;
                reportDocument.Load(Server.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));
                CrystalReportViewer1.ReportSource = reportDocument;
reportDocument.SetDatabaseLogon("DB", "1111","test","DB");
            }

我终于找到了这个错误的解决方案 为什么我在向 IIS 发布 Crystal 报告 13 后得到空白页?

  1. 正在下载和安装 Crystal 的运行时 Reports 13 for Visual Studio 2017。(如果您之前已经执行过此操作并且您的应用程序在本地运行,则可能需要跳过此步骤).

  2. 安装运行时后。 Crystal Reports 将在您本地计算机的位置安装所需的支持文件: C:\inetpub\wwwroot\aspnet_client\system_web_0_30319\crystalreportviewers13

  3. 复制整个 Crystal Report Support 文件夹 C:\inetpub\wwwroot\aspnet_client\system_web_0_30319\crystalreportviewers13 到您网站的 SITE_ROOT\aspnet_client\system_web_0_30319 文件夹。

4) 如果您的网站根目录中没有 \aspnet_client\system_web_0_30319 文件夹。请手动创建它们,然后将 crystalreportviewers13 复制到其中。

注意:版本号'4_0_30319'不固定,可能会因asp.net版本而改变。如果 4_0_30319 不起作用,您可以尝试将此文件夹名称更改为 4_6_1069。

我使用以下解决方案将参数从 crystal 使用带有参数的存储过程的报告传递到网站并从 sqlserver 数据库读取:

ReportDocument reportDocument = new ReportDocument();
                ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
                ParameterDiscreteValue paramDiscreteValue1 = new ParameterDiscreteValue();
                ParameterField parameterField1 = new ParameterField();
                ParameterDiscreteValue parameterDiscreteValue1 = new ParameterDiscreteValue();
                ParameterFields parameterFields = new ParameterFields();
   parameterField1.Name = "@ORDER_ID";
   parameterDiscreteValue1.Value = (object)this.TXTORDERID.Text.ToString();
                            parameterField1.CurrentValues.Add((ParameterValue)parameterDiscreteValue1);
                            parameterFields.Add(parameterField1);

                            ParameterField parameterField2 = new ParameterField();
                            ParameterDiscreteValue parameterDiscreteValue2 = new ParameterDiscreteValue();
                            parameterField2.Name = "@deptid";
                            parameterDiscreteValue2.Value = (object)this.TXTDEPTID.Text.ToString();
                            parameterField2.CurrentValues.Add((ParameterValue)parameterDiscreteValue2);
                            parameterFields.Add(parameterField2);
                            this.CrystalReportViewer1.ParameterFieldInfo = parameterFields;
                            this.CrystalReportViewer1.ReuseParameterValuesOnRefresh = true;
                            this.CrystalReportViewer1.ToolPanelView = ToolPanelViewType.None;
                            reportDocument.Load(this.Server.MapPath("~/RPT/RPT_CASH_RESULT.rpt"));
                            this.CrystalReportViewer1.ReportSource = (object)reportDocument;
                            reportDocument.SetDatabaseLogon("DB", "111");

                            ConnectionInfo connectionInfo = new ConnectionInfo();
                            connectionInfo.ServerName = "server";
                            connectionInfo.DatabaseName = "DBname";
                            connectionInfo.Password = "dbpass";
                            connectionInfo.UserID = "DBuser";
                            connectionInfo.Type = ConnectionInfoType.SQL;
                            connectionInfo.IntegratedSecurity = false;
                            for (int index = 0; index < this.CrystalReportViewer1.LogOnInfo.Count; ++index)
                                this.CrystalReportViewer1.LogOnInfo[index].ConnectionInfo = connectionInfo;