public ProjProdAssign_View(Form parentView, int projectID) { this.parentView = parentView; ProjectId = projectID; this.projProdCont = new ProjectProductController(); InitializeComponent(); }
/// <summary> /// Handles the Load event of the ProjProdAssign_Form control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> /// Erstellt von Veit Berg, am 27.01.16 private void ProjProdAssign_Form_Load(object sender, EventArgs e) { try { using (ProjectProductController proProCont = new ProjectProductController()) { ProjProds = proProCont.GetAllProjectProductsForOneProject(ProjectId); using (ProductController prodCon = new ProductController()) { foreach (ProjectProduct projProd in ProjProds) { var singleProdId = prodCon.GetProductById(projProd.Product_Id); projProd.Name = singleProdId.Name.ToString(); } } } using (ProductController prodCont = new ProductController()) { AllProds = prodCont.GetAllProductsFromDb(); if (ProjProds.Count != 0) { foreach (ProjectProduct projProd in ProjProds) { Product allocatedProd = AllProds.Single(prod => prod.Product_Id == projProd.Product_Id); AllProds.Remove(allocatedProd); } } } dataGridView_prodAvail.Rows.Clear(); var ProdBindingList = new BindingList <Product>(AllProds); var prodSource = new BindingSource(ProdBindingList, null); dataGridView_prodAvail.DataSource = AllProds; dataGridView_prodAvail.Columns["Producer"].HeaderText = "Hersteller"; dataGridView_prodAvail.Columns["Product_Id"].HeaderText = "Produkt ID"; dataGridView_prodAvail.Columns["Price"].HeaderText = "Preis"; dataGridView_ProjProd.Rows.Clear(); var ProjProdBindingList = new BindingList <ProjectProduct>(ProjProds); var projProdSource = new BindingSource(ProjProdBindingList, null); dataGridView_ProjProd.DataSource = ProjProds; dataGridView_ProjProd.Columns.Remove("Project_Id"); dataGridView_ProjProd.Columns.Remove("Product"); dataGridView_ProjProd.Columns.Remove("Project"); dataGridView_ProjProd.Columns["Product_Id"].HeaderText = "Produkt ID"; dataGridView_ProjProd.Columns[1].Width = 200; this.FormClosing += new FormClosingEventHandler(ProjProdAssign_View_FormClosing); } catch (Exception i) { MessageBox.Show(i.Message); } }
//Methode um das Grundgerüst der Tabellen zu erstellen private PdfPTable GetNewProductTable(List <AnalysedProduct> productsForThisTable, int firstProdId, int tableNumber) { ProjectProductController projprodContr = new ProjectProductController(); int numberOfallProductsForThisProject = projprodContr.GetAllProjectProductsForOneProject(this.Project.Project_Id).Count; int numOfProdsInThisTable = productsForThisTable.Count; //Überschrift und nötige Formatierung setzen (Schriftart, Fett Druck, Schriftgröße) Font arialBold = FontFactory.GetFont("Arial_BOLD", 10, Font.BOLD); Font products = FontFactory.GetFont("Arial_BOLD", 7, Font.NORMAL); //Erstellen einer Pdf Tabelle in der die Daten aus der Datenbank ausgegeben werden //Erstellen der PdfTable PdfPTable CritTable = new PdfPTable(numOfProdsInThisTable + 4); //int der die Anzahl der festen Spalten und die variable Anzahl der Produkte enthält int numberOfCells = numOfProdsInThisTable + 4; // Je nach Anzahl der Produkte in der Datenbank wir die relative Spaltenbreite gesetzt if (numberOfCells == 3) { float[] widths = { 20f, 2f, 2f, }; CritTable.SetWidths(widths);; } if (numberOfCells == 4) { float[] widths = { 20f, 2f, 1f, 3f, }; CritTable.SetWidths(widths);; } if (numberOfCells == 5) { float[] widths = { 20, 2f, 2f, 3f, 3f }; CritTable.SetWidths(widths);; } if (numberOfCells == 6) { float[] widths = { 20, 2f, 2f, 3f, 3f, 3f }; CritTable.SetWidths(widths);; } if (numberOfCells == 7) { float[] widths = { 20f, 2f, 2f, 3f, 3f, 3f, 3f }; CritTable.SetWidths(widths);; } if (numberOfCells == 8) { float[] widths = { 20f, 2f, 2f, 3f, 3f, 3f, 3f, 3f }; CritTable.SetWidths(widths);; } if (numberOfCells == 9) { float[] widths = { 20f, 2f, 2f, 3f, 3f, 3f, 3f, 3f, 3f }; CritTable.SetWidths(widths);; } // Die Grenzen der Tabelle unsichtbar machen CritTable.DefaultCell.Border = 1; //Anzeigen der ersten Zeilen als Überschrift auf jeder Seite des Dokuments CritTable.HeaderRows = 1; //Platz zwischen Produktlegende und der Tabelle CritTable.SpacingBefore = 20f; //if-Abfrage für die, je nach Anzahl der Produkte, korrekte "Überschrift der Tabelle" if (numberOfallProductsForThisProject > 5) { CritTable.AddCell(new Paragraph(String.Format("Nutzwert - Analyse [{0}. Teil]", tableNumber), arialBold)); } else { CritTable.AddCell(new Paragraph("Nutzwert - Analyse", arialBold)); } CritTable.AddCell(new Paragraph(" ")); //Leere Zelle sorgt für Abstand zwischen Header und Erfüllungen CritTable.AddCell(new Paragraph("Gew.", products)); //Spaltenüberschriften CritTable.AddCell(new Paragraph("Proz.", products)); foreach (AnalysedProduct analysedProd in productsForThisTable) { string prodHeader = "Prd." + firstProdId.ToString(); CritTable.AddCell(new Paragraph(prodHeader, products)); firstProdId++; } CritTable.HorizontalAlignment = 0; //Totale Breite der "Tabelle" CritTable.TotalWidth = 700f; CritTable.LockedWidth = true; return(CritTable); }
/// <summary> /// Methode um Pdf erstellen etc. /// </summary> /// /// Erstellt von Adrian Glasnek public void CreateFulfillmentForEveryProductPdf() { ProjectProductController projprodContr = new ProjectProductController(); this.AllProductsForThisProject = projprodContr.GetAllProjectProductsForOneProject(this.Project.Project_Id); List <ProjectCriterion> baseCriterions = this.ProjCritContr.GetBaseProjectCriterions(this.Project.Project_Id); //Get all base Criterions SfdFulfillment.Filter = "Pdf File |*.pdf"; if (SfdFulfillment.ShowDialog() == DialogResult.OK) { FulfillmentPrinter.SetMargins(50, 200, 50, 125); //Seitenränder definieren try //try catch um Fehler abzufangen wenn eine gleichnamige PDF noch geöffnet ist { PdfWriter writer = PdfWriter.GetInstance(FulfillmentPrinter, new FileStream(SfdFulfillment.FileName, FileMode.Create)); writer.PageEvent = new PdfPageEvents(); } catch (Exception) { throw new Exception("Bitte schließen Sie das geöffnete Pdf!"); } //Dokument öffnen um es bearbeiten zu können FulfillmentPrinter.Open(); ////int der die Anzahl der festen Spalten und die variable Anzahl der Produkte enthält int countProducts = AllProductsForThisProject.Count(); int prodCounter = 1; //Zählt wieviele Produkte in der Datenbank liegen und schreibt dementsprechend viele Spalten auf das Pdf foreach (ProjectProduct Prod in AllProductsForThisProject) { //Paragraph um Namen der Produkte mit den Abkürzungen in der Tabelle verbinden zu können //Font für die Ausgabe der Produktlegende Paragraph productName = new Paragraph(); Font prodNameFont = FontFactory.GetFont("Arial", 9); productName.Font = prodNameFont; productName.Add("Prd. " + prodCounter.ToString() + " - " + Prod.Product.Name + "\n"); FulfillmentPrinter.Add(productName); //Produktname der vergliechenen Produkte auf dem Dokument anzeige prodCounter++; } //Bei einer Anzahl von mehr als 5 Produkten innerhalb eines NWA-Projekts werden jeweils weitere Tabellen mit den restlichen Produkten generiert List <List <ProjectProduct> > tableLists = GetProdTableLists(); int firstProdId = 1; int tableNumber = 1; foreach (List <ProjectProduct> prodsInTable in tableLists) { PdfPTable CritTable = GetNewProductTable(prodsInTable, firstProdId, tableNumber); //Methodenaufruf PrintCriterionStructure(ref CritTable, prodsInTable); //Tabelle zum Dokument Adden FulfillmentPrinter.Add(CritTable); // Neue Seite ab jedem neuem "Teil" der tabellarischen Ansicht FulfillmentPrinter.NewPage(); firstProdId += this.maxProductsInTable; tableNumber++; } //Close Dokument - Bearbeitung Beenden FulfillmentPrinter.Close(); //Aufrufen der Hilfsmethode (aus Klasse CriterionStructurePrinter)- Seitenzahl und den Projektnamen auf Pdf GetPageNumber(SfdFulfillment, 800); //Erfolgsmeldung MessageBox.Show("Pdf erfolgreich erstellt!"); //PDf wird automatisch geöffnet nach der erfolgreichen Speicherung System.Diagnostics.Process.Start(SfdFulfillment.FileName); } }
/// <summary> /// Handles the Load event of the ProjCritProdFulfilment_Form control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> /// Erstellt von Veit Berg, am 27.01.16 private void ProjCritProdFulfilment_Form_Load(object sender, EventArgs e) { try{ formloaded = 1; using (ProjectProductController Projverw = new ProjectProductController()) { ProjectProduct projprod = (ProjectProduct)comboBox_ProjCritProdFulf.SelectedItem; List <ProjectProduct> ProdList = Projverw.GetAllProjectProductsForOneProject(Project.Project_Id); List <Product> productsList = new List <Product>(); foreach (ProjectProduct projProd in ProdList) { productsList.Add(projProd.Product); } comboBox_ProjCritProdFulf.DataSource = productsList; comboBox_ProjCritProdFulf.DisplayMember = "Name"; comboBox_ProjCritProdFulf.SelectedIndex = -1; } using (ProjectCriterionController proCriCont = new ProjectCriterionController()) { ProjCrits = proCriCont.GetSortedCriterionStructure(Project.Project_Id); using (CriterionController critCon = new CriterionController()) { foreach (ProjectCriterion projCrit in ProjCrits) { var singleCritId = critCon.GetCriterionById(projCrit.Criterion_Id); projCrit.Name = singleCritId.Name.ToString(); } } var CritBindingList = new BindingList <ProjectCriterion>(ProjCrits); var CritSource = new BindingSource(CritBindingList, null); dataGridView_ProjCritProdFulf.DataSource = ProjCrits; dataGridView_ProjCritProdFulf.Columns.Remove("Project_Id"); dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Cardinal"); dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Percentage_Layer"); dataGridView_ProjCritProdFulf.Columns.Remove("Weighting_Percentage_Project"); dataGridView_ProjCritProdFulf.Columns.Remove("Criterion"); dataGridView_ProjCritProdFulf.Columns.Remove("ParentCriterion"); dataGridView_ProjCritProdFulf.Columns.Remove("Project"); DataGridViewCheckBoxColumn chk = new DataGridViewCheckBoxColumn(); dataGridView_ProjCritProdFulf.Columns.Add(chk); chk.Name = "Erfüllung"; DataGridViewTextBoxColumn bem = new DataGridViewTextBoxColumn(); bem.Name = "Bemerkung"; dataGridView_ProjCritProdFulf.Columns.Add(bem); dataGridView_ProjCritProdFulf.Columns[4].DisplayIndex = 0; dataGridView_ProjCritProdFulf.Columns[3].DisplayIndex = 1; dataGridView_ProjCritProdFulf.Columns[5].DisplayIndex = 2; dataGridView_ProjCritProdFulf.Columns[1].DisplayIndex = 3; dataGridView_ProjCritProdFulf.Columns[0].DisplayIndex = 4; dataGridView_ProjCritProdFulf.Columns[2].DisplayIndex = 5; dataGridView_ProjCritProdFulf.Columns[0].HeaderText = "C-ID"; dataGridView_ProjCritProdFulf.Columns[1].HeaderText = "Layer"; dataGridView_ProjCritProdFulf.Columns[2].HeaderText = "P-ID"; dataGridView_ProjCritProdFulf.Columns[3].HeaderText = "Name"; dataGridView_ProjCritProdFulf.Columns[4].Name = "Erfüllung"; dataGridView_ProjCritProdFulf.Columns["Name"].ReadOnly = true; dataGridView_ProjCritProdFulf.Columns["Layer_Depth"].ReadOnly = true; dataGridView_ProjCritProdFulf.Columns["Criterion_ID"].ReadOnly = true; dataGridView_ProjCritProdFulf.Columns["Parent_Criterion_Id"].ReadOnly = true; dataGridView_ProjCritProdFulf.Columns[0].Width = 50; dataGridView_ProjCritProdFulf.Columns[1].Width = 50; dataGridView_ProjCritProdFulf.Columns[2].Width = 50; dataGridView_ProjCritProdFulf.Columns[4].Width = 50; dataGridView_ProjCritProdFulf.Columns[3].Width = 150; dataGridView_ProjCritProdFulf.Columns[5].Width = 200; foreach (DataGridViewRow row in dataGridView_ProjCritProdFulf.Rows) { row.Cells["Erfüllung"].Value = false; } } } catch (Exception i) { MessageBox.Show(i.Message); } this.dataGridView_ProjCritProdFulf.CellValidating += new DataGridViewCellValidatingEventHandler(dataGridView_ProjCritProdFulf_CellValidating); this.FormClosing += new FormClosingEventHandler(ProjCritProdFulfillment_View_FormClosing); }