using BLL; using NPOI.POIFS.Crypt.Dsig; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.HJGL.TestPackage { public partial class TestPackageDatePrint : PageBase { /// /// 试压包主键 /// public string PTP_ID { get { return (string)ViewState["PTP_ID"]; } set { ViewState["PTP_ID"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { PTP_ID = Request.Params["PTP_ID"]; if (!string.IsNullOrEmpty(PTP_ID)) { BindGrid(); } } } private void BindGrid() { var list = BLL.TestPackagePrintService.GetListByPTP_ID(PTP_ID); //根据 BLL.TestPackagePrintService.TypeIntMap 和 list 进行左连接,确保所有类型都显示,获取对应的 PrintCount,没有的类型 PrintCount 为 0 var result = from type in BLL.TestPackagePrintService.TypeIntMap join item in list on type.Key equals item.TypeInt into gj from subitem in gj.DefaultIfEmpty() select new { TypeInt = type.Key, TypeName = type.Value, PrintCount = subitem != null ? subitem.PrintCount : 0 }; Grid1.DataSource = result; Grid1.DataBind(); } protected void btnPrint_Click(object sender, EventArgs e) { Model.PTP_TestPackage updateTestPackage = Funs.DB.PTP_TestPackage.FirstOrDefault(x => x.PTP_ID == PTP_ID); var fastReportItem = BLL.TestPackagePrintService.GetFastReportItem(updateTestPackage,Grid1.SelectedRowID,PTP_ID,this.CurrUser.LoginProjectId); BLL.FastReportService.ResetData(); BLL.FastReportService.AddFastreportParameter(fastReportItem.ParameterValues); if (fastReportItem.DataTables!=null) { foreach (var item in fastReportItem.DataTables) { BLL.FastReportService.AddFastreportTable(item); } } string initTemplatePath = ""; string rootPath = Server.MapPath("~/"); initTemplatePath = fastReportItem.ReportPath; if (File.Exists(rootPath + initTemplatePath)) { TestPackagePrintService.AddPrintCountByTypeInt(PTP_ID, int.Parse( Grid1.SelectedRowID)); PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("~/Controls/Fastreport.aspx?ReportPath={0}", rootPath + initTemplatePath))); } } } }