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
Спасибо за совет...какая-то помощь в ответ на мой вопрос?