using System; using System.Collections; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; using Infragistics.WebUI.UltraWebGrid; using Blossim; using Blossim.A_Mes.Data; using Blossim.A_Mes.BusinessFacade; using CrystalDecisions.CrystalReports.Engine; public partial class Distribution_Feeding_DistributionTaskPrint : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["orderNo"] != null && Request.QueryString["orderNo"].ToString() != "") { ShowReport(Request.QueryString["orderNo"].ToString()); } } private void ShowReport(string orderNo) { DataTable data = new DistributionSystem().GetProductionOrderByOrderNo(orderNo); DataTable dataDetail = new DistributionSystem().GetPlannedfeedingByOrderNo(orderNo); ProductionOrderByOrderNo ds = new ProductionOrderByOrderNo(); if (data == null || data.Rows.Count == 0) { SetReport(ds); return; } if (dataDetail == null || dataDetail.Rows.Count == 0) { SetReport(ds); return; } //ds.Tables.Remove("POTimelyRateDataTable"); DataTable dt = ds.Tables["ProductionOrder"]; DataTable dtDetail = ds.Tables["ProductionOrderDetail"]; DataRow row; foreach (DataRow r in data.Rows) { row = dt.NewRow(); row["orderno"] = r["orderno"]; row["partcode"] = r["partcode"]; row["partname"] = r["partname"]; row["productionorderno"] = r["productionorderno"]; row["salesorderno"] = r["salesorderno"]; row["plannedenddate"] = r["plannedenddate"]; row["orderquantity"] = Convert.ToDecimal(r["orderquantity"]).ToString("#0.000"); dt.Rows.Add(row); } foreach (DataRow r in dataDetail.Rows) { row = dtDetail.NewRow(); row["item"] = r["item"]; row["orderpartcode"] = r["orderpartcode"]; row["bin"] = r["bin"]; row["messendqty"] = Convert.ToDecimal(r["messendqty"]).ToString("#0.000"); row["requiredqty"] = Convert.ToDecimal(r["requiredqty"]).ToString("#0.000"); row["diffqty"] = Convert.ToDecimal(r["diffqty"]).ToString("#0.000"); row["orderpartname"] = r["orderpartname"]; row["specialcode"] = r["specialcode"]; row["unitname"] = r["unitname"]; row["revisionno"] = r["revisionno"]; row["house"] = r["house"]; dtDetail.Rows.Add(row); } SetReport(ds); } private void SetReport(ProductionOrderByOrderNo ds) { ReportDocument crqcDoc = new ReportDocument(); crqcDoc.Load(this.MapPath("~/Report/ProductionOrderReport.rpt")); crqcDocList.Add(crqcDoc);//将ReportDocument添加了泛型类中 crqcDoc.SetDataSource(ds); CrystalReportViewer1.ReportSource = crqcDoc; } #region 释放报表资源 //创建一个ReportDocument 的泛型类,用来收集在页面中创建的报表 System.Collections.Generic.List<ReportDocument> crqcDocList = new System.Collections.Generic.List<ReportDocument>(); //在UnLoad 事件中释放资料 protected void Page_UnLoad(object sender, EventArgs e) { //释放在程序中动态创建的报表 if (crqcDocList != null) { ReportDocument rd = null; for (int i = 0; i < crqcDocList.Count; i++) { rd = crqcDocList[i]; try { rd.Dispose(); } catch { rd = null; } } } } #endregion }