USING CRYSTALDECISIONS.SHARED
private void BuildReportViewerParameters (CrystalDecisions.Web.CrystalReportViewer rptViewer, Hashtable ParamTable) {// report view parameter defines a method ParameterFields ParamFields = new ParameterFields (); foreach (object key in ParamTable.Keys) {ParameterField ParamField = new ParameterField (); ParameterValues paramValues = new ParameterValues (); ParameterDiscreteValue ParamValue = new ParameterDiscreteValue (); ParamValue.Value = ParamTable [key] .ToString (); ParamValues.Add (ParamValue); ParamField.ParameterFieldName = key.ToString (); ParamField.CurrentValues = Paramfields.Add (paramfield);} rptviewer.ParameterfieldInfo = paramfields;}
private void BuildReportClassParameters (CrystalDecisions.CrystalReports.Engine.ReportClass rpt, Hashtable ParamTable) {// report class parameter defines a method foreach (object key in ParamTable.Keys) {ParameterValues ParamValues = new ParameterValues (); ParameterDiscreteValue ParamValue = new ParameterDiscreteValue ( ); ParamValue.Value = ParamTable [key] .ToString (); ParamValues.Add (ParamValue); rpt.DataDefinition.ParameterFields [key.ToString ()] ApplyCurrentValues (paramValues);.}} protected void BuildReportParameters (CrystalDecisions.Web. CrystalReportViewer RPT, HashTable Paramtable) {// Define Report Parameters Parameterfields Paramfields = New Parameterfields ();
foreach (object key in ParamTable.Keys) {ParameterField ParamField; ParameterValues ParamValues; ParameterDiscreteValue ParamValue; ParamField = new ParameterField (); ParamValues = new ParameterValues (); ParamValue = new ParameterDiscreteValue ();
ParamValue.Value = (string) ParamTable [key]; ParamValues.Add (ParamValue); ParamField.ParameterFieldName = (string) key; ParamField.CurrentValues = ParamValues; ParamFields.Add (ParamField);} rpt.ParameterFieldInfo = ParamFields;}
Then you need to call the parameters, add the reference:
private void Button_output_Click (object sender, System.EventArgs e) {CrystalDecisions.Shared.TableLogOnInfo logInfo = new CrystalDecisions.Shared.TableLogOnInfo (); // login information report set logInfo.ConnectionInfo.ServerName = "ANGEL"; // Set Report and connection information database logInfo.ConnectionInfo.DatabaseName = "KaoQin"; logInfo.TableName = "Emstatistic"; logInfo.ConnectionInfo.UserID = "sa"; logInfo.ConnectionInfo.Password = ""; CrystalReportViewer1.ReportSource = Server.MapPath ( "cr_aa.rpt"); // Specify the data source of the report CRYSTALREPORTVIEWER1.LogonInfo.add (loginfo); // During the parameter, the parameter is assigned // CrystalReportViewer1.DATABIND ();
// declare variables and get the export options cr_aa myReport = new cr_aa (); // define a named myReport report myReport.Database.Tables [0] .ApplyLogOnInfo (logInfo); CrystalReportViewer1.ReportSource = myReport; CrystalReportViewer1.DataBind () ;
Hashtable t = new Hashtable (); t.Add ( "p_st_month", Textmonth.Text); // assignment BuildReportParameters (CrystalReportViewer1, t) as a parameter; // call to create a report parameter method BuildReportViewerParameters (CrystalReportViewer1, t); // add parameters to the report viewer BuildReportClassParameters (myReport, t); // add the parameter CrystalDecisions.Shared.DiskFileDestinationOptions diskOpts = new CrystalDecisions.Shared.DiskFileDestinationOptions () to report class; // set the export format myReport.ExportOptions.ExportDestinationType = CrystalDecisions.Shared .ExportDestinationType.DiskFile; myReport.ExportOptions.ExportFormatType = CrystalDecisions.Shared.ExportFormatType.Excel; // set the disk file option diskOpts.DiskFileName = "C: // documents and settings // Administrator // My documents // kaoqin_rpt.xls" Myreport.exportOptions.DestinationOptions = Diskopts; myreport.export (); response.write ("