7

我是水晶报表的新手。我通过以下链接设计了一个 Crystal Report:带有 SQL 存储过程参数和 Visual Studio的 Crystal Report 我需要做的是将不同的 ID(SP 的输入值)传递给我与 Crystal Report 连接的 SP。

这是我将 ID 传递给 Crystal Report 的代码:

        protected void Button1_Click(object sender, EventArgs e)
        {
        string QuotationID = ViewState["QUOTATION_ID"].ToString();
        ReportDocument reportDocument = new ReportDocument();
        ParameterField paramField = new ParameterField();
        ParameterFields paramFields = new ParameterFields();
        ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();


       
        paramField.Name = "@id";


        paramDiscreteValue.Value = QuotationID;

        paramField.CurrentValues.Add(paramDiscreteValue);
        paramFields.Add(paramField);

        
        paramFields.Add(paramField);

        CrystalReportViewer1.ParameterFieldInfo = paramFields;

        string reportPath = Server.MapPath("~/CrystalReport.rpt");

        reportDocument.Load(reportPath);

       
        CrystalReportViewer1.ReportSource = reportDocument;
        }

但是每当我单击按钮时,它都会要求输入 ID...在此处输入图像描述

4

1 回答 1

11

要在晶体上设置参数,我总是这样做:

ReportDocument reportDocument = new ReportDocument();
reportDocument.Load(reportPath);
reportDocument.SetParameterValue("@id", QuotationID);

如果要将报告转换为 pdf:

var exportOptions = reportDocument.ExportOptions;
exportOptions.ExportDestinationType = ExportDestinationType.NoDestination;
exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
var req = new ExportRequestContext {ExportInfo = exportOptions};
var stream = reportDocument.FormatEngine.ExportToStream(req);

这将返回您可以从 aspx 页面打开的文件流。

于 2013-11-07T14:42:57.013 回答