public static void FillOutGrid(DataGridView grid, DataTable table, bool attachImages)
        {
            grid.Columns.Clear();
            grid.Columns.Add("Nazwa", "Nazwa");

            for (int r = 0; r < table.Rows.Count; r++)
            {
                grid.Columns.Add("Wartosc" + r, "Wartosc" + r);

                for (int c = 0; c < table.Columns.Count; c++)
                {
                    grid.Rows.Add(table.Columns[c].ColumnName, table.Rows[r][c]);
                }
                if (attachImages)
                {
                    DataGridViewImageButtonSaveColumn columnImage = new DataGridViewImageButtonSaveColumn();

                    columnImage.Name       = "Images";
                    columnImage.HeaderText = "";
                    grid.Columns.Add(columnImage);

                    string date        = table.Rows[r]["Data_czas"].ToString().Substring(0, 10).Replace(".", "-");
                    string lot         = table.Rows[r]["numerZlecenia"].ToString();
                    var    fileImgList = VIOperations.TryGetFileInfoOfImagesForLot(lot, date);

                    if (fileImgList.Count > 0)
                    {
                        foreach (DataGridViewRow row in grid.Rows)
                        {
                            string rowFailureName             = row.Cells[0].Value.ToString();
                            List <System.IO.FileInfo> tagList = new List <System.IO.FileInfo>();
                            foreach (var img in fileImgList)
                            {
                                string failureName = img.Name.Split('_')[1];


                                if (failureName == rowFailureName)
                                {
                                    tagList.Add(img);
                                }
                            }
                            if (tagList.Count > 0)
                            {
                                ((DataGridViewImageButtonSaveCell)(row.Cells[r + 2])).Enabled     = true;
                                ((DataGridViewImageButtonSaveCell)(row.Cells[r + 2])).ButtonState = PushButtonState.Normal;

                                row.Cells[r + 2].Tag = tagList;
                            }
                        }
                    }
                }
            }



            SMTOperations.autoSizeGridColumns(grid);
        }
        private void WasteReasonDetails_Load(object sender, EventArgs e)
        {
            DataTable sourceTable = new DataTable();

            sourceTable.Columns.Add("Dobrych");
            sourceTable.Columns.Add("Ng");
            sourceTable.Columns.Add("LOT");
            sourceTable.Columns.Add("Model");
            sourceTable.Columns.Add("Data");
            sourceTable.Columns.Add("LiniaSMT");
            sourceTable.Columns.Add("Operator");
            //sourceTable.Columns.Add("Zdjecia");


            sourceTable.Columns["Dobrych"].DataType = typeof(Int32);

            Dictionary <string, Int32> qtyPerModel = new Dictionary <string, int>();
            Dictionary <string, Int32> qtyPerLine  = new Dictionary <string, int>();

            foreach (var lot in inputWasteData.Lots)
            {
                string model = lot.Model;
                string line  = lot.SmtLine;

                if (!qtyPerLine.ContainsKey(line))
                {
                    qtyPerLine.Add(line, 0);
                }
                if (!qtyPerModel.ContainsKey(model))
                {
                    qtyPerModel.Add(model, 0);
                }

                Int32 qty = lot.WastePerReason[title];
                qtyPerLine[line]   += qty;
                qtyPerModel[model] += qty;

                var imageList = VIOperations.TryGetFileInfoOfImagesForLot(lot.NumerZlecenia, lot.RealDateTime.ToString("dd-MM-yyyy"));
                if (imageList.Count > 0)
                {
                    if (!imagesPerLot.ContainsKey(lot.NumerZlecenia))
                    {
                        imagesPerLot.Add(lot.NumerZlecenia, new List <FileInfo>());
                    }
                    imagesPerLot[lot.NumerZlecenia].AddRange(imageList);
                }

                sourceTable.Rows.Add(lot.GoodQty, lot.WastePerReason[title], lot.NumerZlecenia, lot.Model, lot.RealDateTime, lot.SmtLine, lot.Oper);
            }

            DataView dv = sourceTable.DefaultView;

            dv.Sort = "Dobrych desc";
            dataGridView1.DataSource = dv.ToTable();

            label1.Text = title;

            DataTable modelSource = new DataTable();

            modelSource.Columns.Add("Model");
            modelSource.Columns.Add("Ilość", typeof(Int32));

            DataTable lineSource = new DataTable();

            lineSource.Columns.Add("Linia");
            lineSource.Columns.Add("Ilość", typeof(Int32));

            foreach (var modelEntry in qtyPerModel)
            {
                modelSource.Rows.Add(modelEntry.Key, modelEntry.Value);
            }

            foreach (var lineEntry in qtyPerLine)
            {
                lineSource.Rows.Add(lineEntry.Key, lineEntry.Value);
            }

            dataGridViewModel.DataSource = modelSource;
            dataGridViewLine.DataSource  = lineSource;

            SMTOperations.autoSizeGridColumns(dataGridView1);
            SMTOperations.autoSizeGridColumns(dataGridViewLine);
            SMTOperations.autoSizeGridColumns(dataGridViewModel);

            dataGridViewLine.Sort(this.dataGridViewLine.Columns["Ilość"], ListSortDirection.Descending);
            dataGridViewModel.Sort(this.dataGridViewModel.Columns["Ilość"], ListSortDirection.Descending);
        }