web-dev-qa-db-ja.com

asp.netのC#を介してCRYSTALREPORTにパラメーターを渡す

私はCrystalReportを初めて使用します。このリンクをたどってCrystalReportを設計しました SQLストアドプロシージャパラメータとVisual Studioを使用したCrystal Report 実際には別のID(SPの入力値)をに渡す必要がありますSP私はCrystalレポートに接続しました。

これは私がIDをCrystalReportに渡すコードです:

        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を尋ねられます...enter image description here

7
user2536023

クリスタルにパラメータを設定するには、常に次のようにします。

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ページから開くことができるファイルストリームが返されます。

11
Raphael