Goran Bibic Ответов: 0

Itext PDF печать после индекса изменения выбора в поле со списком?


Itext pdf print after selection index changed in combobox
 
After selection index changed have new values in datagrid print empty
 
Have header no have datagrid
 
Simle pdf document



Заполнение Datagrid

 private void radni_sati_radnika_zbirno()
        {
            using (SqlConnection openCon = new SqlConnection(cs))

            {

 string saveStaff = " declare @filterDate date; SELECT  [radnik] as Radnik, "
                     // + "DATEADD(DAY, DATEDIFF(DAY, 0, vrijemeprijave), 0) AS [Datum] , "
                     + "SUM(cast((CASE WHEN DATEPART(WEEKDAY, vrijemeprijave) in (1, 7) then 0 else (CASE WHEN(DATEDIFF(SECOND, vrijemeprijave, vrijemeodjave) / 3600) > 8 THEN 8 ELSE(DATEDIFF(SECOND, vrijemeprijave, vrijemeodjave) / 3600) END) end)as float))   AS 'radni_sati',"
                     + "SUM(cast((CASE WHEN DATEPART(WEEKDAY, vrijemeodjave) in (1, 7) then(DATEDIFF(SECOND, vrijemeprijave, vrijemeodjave) / 3600) else(case when(DATEDIFF(SECOND, vrijemeprijave, vrijemeodjave) / 3600) > 8  then((DATEDIFF(SECOND, vrijemeprijave, vrijemeodjave) / 3600) - 8) ELSE 0 END) end)as float))   AS 'Prekovremeni'"
                     + "from [prijava_radnika]"
                     + "where MONTH([vrijemeprijave]) = '" + mjeseccomboBox.Text.ToString() + "'  "
                     + "group by [radnik]";

openCon.Open();
                using (SqlDataAdapter querySaveStaff = new SqlDataAdapter(saveStaff, cs))

                {
                    DataTable dt = new DataTable();
                    DataColumn column = new DataColumn();
                    column.DataType = System.Type.GetType("System.Int32");
                    column.ColumnName = "redni_broj";
                    column.AutoIncrement = true;
                    column.AutoIncrementSeed = 1;
                    column.AutoIncrementStep = 1;
                    dt.Columns.Add(column);
                    int index = -1;
                    foreach (DataRow row in dt.Rows)
                    {
                        row.SetField(column, ++index);
                    }

                    querySaveStaff.Fill(dt);
                    prijava_radnikaDataGridView.DataSource = dt;
                    prijava_radnikaDataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
 prijava_radnikaDataGridView.Columns["redni_broj"].FillWeight = 150;
                    prijava_radnikaDataGridView.Columns["radnik"].FillWeight = 350;  //radnik
 prijava_radnikaDataGridView.Columns["radni_sati"].FillWeight = 150;                  //radni sati
                    prijava_radnikaDataGridView.Columns["Prekovremeni"].FillWeight = 150;                //prekovremeni

prijava_radnikaDataGridView.Update();
                    prijava_radnikaDataGridView.Refresh();
                }

            }
}


Что я уже пробовал:

private void pdfButton_Click(object sender, EventArgs e)  
        {  
            //Creating iTextSharp Table from the DataTable data  
            PdfPTable pdfTable = new PdfPTable(prijava_radnikaDataGridView.ColumnCount);  
            pdfTable.DefaultCell.Padding = 3;  
            pdfTable.WidthPercentage = 100;  
            pdfTable.HorizontalAlignment = Element.ALIGN_CENTER;  
            pdfTable.DefaultCell.BorderWidth = 1;  
            float[] widths = new float[] { 18f, 40f, 35f, 35f};  
            pdfTable.SetWidths(widths);  
            BaseFont bfCalibri = BaseFont.CreateFont("c:\\windows\\fonts\\calibri.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);  
            iTextSharp.text.Font calibri = new iTextSharp.text.Font(bfCalibri, 10, iTextSharp.text.Font.NORMAL, iTextSharp.text.BaseColor.WHITE);  
            iTextSharp.text.Font calibri2 = new iTextSharp.text.Font(bfCalibri, 9);  
  
            //Adding Header row  
            foreach (DataGridViewColumn column in prijava_radnikaDataGridView.Columns)  
            {  
  
  
                  
                    PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText, calibri));  
                    cell.BackgroundColor = new BaseColor(89, 135, 178);  
                    cell.VerticalAlignment = Element.ALIGN_MIDDLE;  
                    pdfTable.AddCell(cell);  
                  
            }  
  
            //Adding DataRow  
            foreach (DataGridViewRow row in prijava_radnikaDataGridView.Rows)  
            {  
                foreach (DataGridViewCell cell in row.Cells)  
                {  
                     
  
                        pdfTable.AddCell(new PdfPCell(new Phrase(cell.Value.ToString(), calibri2)));  
  
                      
                }  
            }  
  
  
  
            //Exporting to PDF  
  
            string folderPath = "C:\\PDFs\\";  
            if (!Directory.Exists(folderPath))  
            {  
                Directory.CreateDirectory(folderPath);  
            }  
            using (FileStream stream = new FileStream(folderPath + "Izvještaj nabavke po dobavljacima.pdf", FileMode.Create))  
            {  
                iTextSharp.text.Font calibriTitle = new iTextSharp.text.Font(bfCalibri, 14);  
                iTextSharp.text.Font calibriSubTitle = new iTextSharp.text.Font(bfCalibri, 10);  
                iTextSharp.text.Font calibrinaslov = new iTextSharp.text.Font(bfCalibri, 16);  
                Document pdfDoc = new Document(PageSize.A4, 27f, 10f, 10f, 30f);  
                // PdfWriter.GetInstance(pdfDoc, stream);  
                PdfWriter writer = PdfWriter.GetInstance(pdfDoc, stream);  
                pdfDoc.Open();   
                pdfDoc.Add(new ListItem(" "));  
                pdfDoc.Add(new ListItem(" "));  
                pdfDoc.Add(new ListItem(" Izvještaj nabavke po dobavljacima", calibrinaslov));  
                pdfDoc.Add(new ListItem(" "));  
                pdfDoc.Add(new ListItem(" "));  
  
  
                 
                pdfDoc.Close();  
                stream.Close();  
                System.Diagnostics.Process.Start(folderPath + "Izvještaj nabavke po dobavljacima.pdf");  
            }  
        }  

Goran Bibic

Просто есть заголовок и пустая бумага...у хо есть датагрид

Richard Deeming

"where MONTH([vrijemeprijave]) = '" + mjeseccomboBox.Text.ToString() + "'  "


И мы снова к этому возвращаемся! 🤦‍♂️

Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

Goran Bibic

Хорошо. Понимать. Спасибо. Покажите мне решение для этого ряда...

"где месяц([vrijemeprijave]) = '" + mjeseccomboBox.Text.Метод toString() + "' "

Richard Deeming

То же решение, что и всегда: используйте параметры.

"where MONTH([vrijemeprijave]) = @Month  "
...
querySaveStaff.SelectCommand.Parameters.AddWithValue("@Month", mjeseccomboBox.Text);

Goran Bibic

Спасибо

Goran Bibic

Спасибо за совет...какая-то помощь в ответ на мой вопрос?

0 Ответов