1、从数据库中选出报表的ID等信息放入datagrid。
2、动态地添加参数的Label,TextBox及验证控件:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Reflection;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace TestRH
{
///<summary>
/// Summary description for WebForm1.
///</summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Table table;
protected System.Web.UI.WebControls.Label Label1;
public int length;
// private string num = Request.QueryString["num"];
private void Page_Load(object sender, System.EventArgs e)
{
//Get parameter
string num = (Request.QueryString["num"]).Substring(5);
string rp = "TestRH.GetPara" + num;
Type t = Type.GetType(rp);
if(t==null)
{
Response.Redirect("Preview.aspx?num="+(Request.QueryString["num"]) + "&Type=" +(Request.QueryString["Type"]));
}
FieldInfo[] fi = t.GetFields();
length = fi.Length;
string [] strArray = new string[length];
int n = 0;
foreach(FieldInfo i in fi)
{
strArray[n] = i.Name;
n++;
}
//Add label and textBox
foreach(string s in strArray)
{
TableRow tr=new TableRow();
TableCell tc1=new TableCell();
TableCell tc2=new TableCell();
Label lb = new Label();
TextBox tbx=new TextBox();
lb.ID = "lb"+this.table.Rows.Count;
lb.Text = s;
tbx.ID="tb"+this.table.Rows.Count;
tc1.Controls.Add(lb);
tc2.Controls.Add(tbx);
tr.Controls.Add(tc1);
tr.Controls.Add(tc2);
this.table.Rows.Add(tr);
}
TableRow tr1 =new TableRow();
TableCell tc3 = new TableCell();
TableCell tc4 = new TableCell();
Button bt1 = new Button();
Button bt2 = new Button();
bt1.Text = "Run";
bt1.CssClass = "button";
bt1.Width = 70;
bt1.Click +=new EventHandler(Run_Click);
bt2.Text = "Cancel";
bt2.CssClass = "button";
bt2.Width = 70;
bt2.Click +=new EventHandler(Cancel_Click);
tc3.Controls.Add(bt1);
tc4.Controls.Add(bt2);
tr1.Controls.Add(tc3);
tr1.Controls.Add(tc4);
this.table.Rows.Add(tr1);
}
private void Run_Click(object sender, System.EventArgs e)
{
for(int i=0;i<length;i++)
{
string tbID = "tb" + i;
TextBox tbInput =(TextBox)(this.table.FindControl(tbID));
//get DateFrom and DateTo.
string lbID = "lb" + i;
Label lb =(Label)(this.table.FindControl(lbID));
string ft = lb.Text.ToString();
int from = ft.CompareTo("DateFrom");
int to = ft.CompareTo("DateTo");
if(from == 0)
Session["DateFrom"] = tbInput.Text;
if(to == 0 )
Session["DateTo"] = tbInput.Text;
Session[i.ToString()] = tbInput.Text;
}
Response.Redirect("Preview.aspx?num="+Request.QueryString["num"]+"&Type="+Request.QueryString["Type"]);
}
private void Cancel_Click(object sender,System.EventArgs e)
{
Response.Redirect("ReportManager.aspx");
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///</summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
3、显示页面:
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Printing;
using System.IO;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using Rhombus3.RP.Rp00060;
using Rhombus3.RP.Rp00063;
using Rhombus3.RP.Rp00026;
using Rhombus3.RP.Rp00030;
using Rhombus3.RP.Rp00054;
using Rhombus3.RP.Rp00059;
using Rhombus3.RP.Rp00061;
using Rhombus3.RP.Rp00070;
using Rhombus3.RP.Rp00072;
using Rhombus3.RP.Rp00075;
using Rhombus3.RP.Rp00076;
using Rhombus3.RP.Rp00001;
namespace Rhombus3
{
///<summary>
/// Summary description for BeginRp00060.
///</summary>
public class Preview : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Print;
protected System.Web.UI.WebControls.Button Export;
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.DropDownList ddlFormat;
protected CrystalDecisions.Web.CrystalReportViewer crView;
protected ParameterFields paramFields = new ParameterFields ();
protected ParameterValues pvDF;
protected ParameterValues pvDT;
protected ParameterValues pvCorporationName;
protected ParameterValues pvCompanyID;
protected ParameterValues pvCCID;
protected ParameterValues pvUserID;
protected ParameterValues pvReportID;
protected ParameterValues pvType;
protected string name;
private void Page_Load(object sender, System.EventArgs e)
{
ReportDocument rd = this.GetRD();
ParameterFields pf = this.GetSession();
this.crView.ParameterFieldInfo = pf;
this.crView.ReportSource = rd;
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}
///<summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
///</summary>
private void InitializeComponent()
{
this.Export.Click += new System.EventHandler(this.Export_Click);
this.Print.Click += new System.EventHandler(this.Print_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private ReportDocument GetRD()
{
try
{
string num = Request.QueryString["num"].Substring(5);
#region switch
switch(num)
{
case "26":
Rp00026LoadData testLD26 = new Rp00026LoadData();
ReportDocument rp26=testLD26.generateReport(Session["0"].ToString(),Session["1"].ToString(),Session["2"].ToString(),
Convert.ToDateTime(Session["3"]),Session["4"].ToString(),Session["5"].ToString());
return rp26;
case "30":
Rp00030LoadData testLD30 = new Rp00030LoadData();
ReportDocument rp30=testLD30.generateReport(Session["0"].ToString(),Convert.ToDateTime(Session["1"]),Session["2"].ToString(),Session["3"].ToString());
return rp30;
case "54":
Rp00054LoadData testLD54 = new Rp00054LoadData();
ReportDocument rp54=testLD54.generateReport(Session["0"].ToString(),Session["1"].ToString(),Session["2"].ToString(),Session["3"].ToString(),
Convert.ToDateTime(Session["4"]),Convert.ToDateTime(Session["5"]),Session["6"].ToString(),Session["7"].ToString(),Session["8"].ToString(),Convert.ToDateTime(Session["9"]));
return rp54;
case "59":
Rp00059LoadData testLD59 = new Rp00059LoadData();
ReportDocument rp59=testLD59.generateReport(Session["0"].ToString(),Convert.ToDateTime(Session["1"]),Convert.ToDateTime(Session["2"]),Convert.ToInt16(Session["3"]),Session["4"].ToString(),Session["5"].ToString());
return rp59;
case "60":
Rp00060LoadData testLD60 = new Rp00060LoadData();
ReportDocument rp60=testLD60.generateReport(Convert.ToDateTime(Session["0"]),Convert.ToDateTime(Session["1"]));
return rp60;
case "61":
Rp00061LoadData testLD61 = new Rp00061LoadData();
ReportDocument rp61=testLD61.generateReport(Convert.ToDateTime(Session["0"]),Convert.ToDateTime(Session["1"]),Convert.ToDateTime(Session["1"]));
return rp61;
case "63":
Rp00063LoadData testLD63 = new Rp00063LoadData();
ReportDocument rp63 =testLD63.generateReport(Session["0"].ToString(),Convert.ToDateTime(Session["1"]),Convert.ToDateTime(Session["2"]),Convert.ToInt16(Session["3"]));
return rp63;
case "70":
Rp00070LoadData testLD70 = new Rp00070LoadData();
ReportDocument rp70=testLD70.generateReport( Convert.ToDateTime(Session["0"]),Convert.ToDateTime(Session["1"]),Session["2"].ToString(),Session["3"].ToString(),Session["4"].ToString());
return rp70;
case "72": //no parameter
Rp00072LoadData testLD72 = new Rp00072LoadData();
ReportDocument rp72=testLD72.generateReport();
return rp72;
case "75":
Rp00075LoadData testLD75 = new Rp00075LoadData();
ReportDocument rp75=testLD75.generateReport(Session["0"].ToString(),Session["1"].ToString(),Session["2"].ToString(),Session["3"].ToString());
return rp75;
case "76":
Rp00076LoadData testLD76 = new Rp00076LoadData();
ReportDocument rp76=testLD76.generateReport(Session["0"].ToString(),Session["1"].ToString(),Session["2"].ToString(),Session["3"].ToString());
return rp76;
case "01":
RP00001LoadData testLD01 = new RP00001LoadData();
ReportDocument rp01=testLD01.generateRD(Convert.ToInt16(Session["0"]),Session["1"].ToString());
return rp01;
default:
return null;
}
#endregion
}
catch(Exception ee)
{
Console.WriteLine(ee.Message);
}
return null;
}
protected ParameterFields GetSession()
{
ParameterField paramFieldf = new ParameterField ();
ParameterDiscreteValue discreteValf = new ParameterDiscreteValue ();
if(Session["DateFrom"]!=null)
{
paramFieldf.ParameterFieldName = "Period from";
discreteValf.Value = Session["DateFrom"].ToString();
pvDF = paramFieldf.CurrentValues;
pvDF.Add (discreteValf);
this.paramFields.Add (paramFieldf);
}
ParameterField paramFieldt = new ParameterField ();
ParameterDiscreteValue discreteValt = new ParameterDiscreteValue ();
if(Session["DateTo"]!=null)
{
paramFieldt.ParameterFieldName = "Period to";
discreteValt.Value = Session["DateTo"].ToString();
pvDT = paramFieldt.CurrentValues;
pvDT.Add (discreteValt);
this.paramFields.Add (paramFieldt);
}
ParameterField paramField = new ParameterField ();
paramField.ParameterFieldName = "iprmCorporateName";
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue ();
discreteVal.Value = Session["CorporationName"].ToString();
pvCorporationName = paramField.CurrentValues;
pvCorporationName.Add (discreteVal);
paramFields.Add (paramField);
ParameterField paramField1 = new ParameterField ();
paramField1.ParameterFieldName = "hprmCompanyID";
ParameterDiscreteValue discreteVal1 = new ParameterDiscreteValue ();
discreteVal1.Value = Session["CompanyID"].ToString();
pvCompanyID = paramField1.CurrentValues;
pvCompanyID.Add (discreteVal1);
paramFields.Add (paramField1);
ParameterField paramField2 = new ParameterField ();
paramField2.ParameterFieldName = "sprmDepartment";
ParameterDiscreteValue discreteVal2 = new ParameterDiscreteValue ();
discreteVal2.Value = Session["CostCenterID"].ToString();
pvCCID = paramField2.CurrentValues;
pvCCID.Add (discreteVal2);
paramFields.Add (paramField2);
ParameterField paramField3 = new ParameterField ();
paramField3.ParameterFieldName = "hprmUserID";
ParameterDiscreteValue discreteVal3 = new ParameterDiscreteValue ();
discreteVal3.Value = Session["UserID"].ToString();
pvUserID = paramField3.CurrentValues;
pvUserID.Add (discreteVal3);
paramFields.Add (paramField3);
ParameterField paramField4 = new ParameterField ();
paramField4.ParameterFieldName = "hprmReportID";
ParameterDiscreteValue discreteVal4 = new ParameterDiscreteValue ();
discreteVal4.Value = Request.QueryString["num"].ToString();
pvReportID = paramField4.CurrentValues;
pvReportID.Add (discreteVal4);
paramFields.Add (paramField4);
ParameterField paramField5 = new ParameterField ();
paramField5.ParameterFieldName = "Type";
ParameterDiscreteValue discreteVal5 = new ParameterDiscreteValue ();
discreteVal5.Value = Request.QueryString["Type"].ToString();
pvType = paramField5.CurrentValues;
pvType.Add (discreteVal5);
paramField5.CurrentValues.Add (discreteVal5);
paramFields.Add (paramField5);
return paramFields;
}
private void Print_Click(object sender, System.EventArgs e)
{
PrinterSettings printer = new PrinterSettings();
if(printer.IsDefaultPrinter)
{
ReportDocument ReportDoc = this.GetRD();
if(Session["DateFrom"]!=null)
{
ReportDoc.DataDefinition.ParameterFields["Period from"].ApplyCurrentValues(pvDF);
}
if(Session["DateTo"]!=null)
{
ReportDoc.DataDefinition.ParameterFields["Period to"].ApplyCurrentValues(pvDT);
}
ReportDoc.DataDefinition.ParameterFields["iprmCorporateName"].ApplyCurrentValues(pvCorporationName);
ReportDoc.DataDefinition.ParameterFields["hprmCompanyID"].ApplyCurrentValues(pvCompanyID);
ReportDoc.DataDefinition.ParameterFields["sprmDepartment"].ApplyCurrentValues(pvCCID);
ReportDoc.DataDefinition.ParameterFields["hprmUserID"].ApplyCurrentValues(pvUserID);
ReportDoc.DataDefinition.ParameterFields["hprmReportID"].ApplyCurrentValues(pvReportID);
ReportDoc.DataDefinition.ParameterFields["Type"].ApplyCurrentValues(pvType);
ReportDoc.PrintOptions.PrinterName = printer.PrinterName;
ReportDoc.PrintToPrinter(1,true,0,0);
}
}
private void Export_Click(object sender, System.EventArgs e)
{
if (Directory.Exists(ConfigurationSettings.AppSettings["TempDir"]) == false)
Directory.CreateDirectory(ConfigurationSettings.AppSettings["TempDir"]);
string tempFileName =ConfigurationSettings.AppSettings["TempDir"] +Request.QueryString["num"].ToString();
DiskFileDestinationOptions DiskOpts = new DiskFileDestinationOptions();
ReportDocument ReportDoc = this.GetRD();
if(Session["DateFrom"]!=null)
{
ReportDoc.DataDefinition.ParameterFields["Period from"].ApplyCurrentValues(pvDF);
}
if(Session["DateTo"]!=null)
{
ReportDoc.DataDefinition.ParameterFields["Period to"].ApplyCurrentValues(pvDT);
}
ReportDoc.DataDefinition.ParameterFields["iprmCorporateName"].ApplyCurrentValues(pvCorporationName);
ReportDoc.DataDefinition.ParameterFields["hprmCompanyID"].ApplyCurrentValues(pvCompanyID);
ReportDoc.DataDefinition.ParameterFields["sprmDepartment"].ApplyCurrentValues(pvCCID);
ReportDoc.DataDefinition.ParameterFields["hprmUserID"].ApplyCurrentValues(pvUserID);
ReportDoc.DataDefinition.ParameterFields["hprmReportID"].ApplyCurrentValues(pvReportID);
ReportDoc.DataDefinition.ParameterFields["Type"].ApplyCurrentValues(pvType);
ReportDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
switch (ddlFormat.SelectedItem.Text)
{
case "Rich Text (RTF)":
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.RichText;
DiskOpts.DiskFileName = tempFileName + ".rtf";
name = ".rtf";
break;
case "Portable Document (PDF)":
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
DiskOpts.DiskFileName = tempFileName + ".pdf";
name = ".pdf";
break;
case "MS Word (DOC)":
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.WordForWindows;
DiskOpts.DiskFileName = tempFileName + ".doc";
name = ".doc";
break;
case "MS Excel (XLS)":
ReportDoc.ExportOptions.ExportFormatType = ExportFormatType.Excel;
DiskOpts.DiskFileName = tempFileName + ".xls";
name = ".xls";
break;
default:
break;
}
ReportDoc.ExportOptions.DestinationOptions = DiskOpts;
ReportDoc.Export();
Response.Write("<script>");
Response.Write("alert('Saved as "+tempFileName.Replace("//","////")+" "+name+"')");
Response.Write("</script>");
// Response.Write("<script>");
// Response.Write("window.open('PDFContainer.aspx','_blank','height=50 resizable=1 width=100px top=50 left=50 scrollbars = 1',false);");
// Response.Write("</script>");
}
}
}