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
}

 

 

posted on 2012-08-11 17:35  小角色  阅读(180)  评论(0)    收藏  举报