2015-01-27 2 views
0

У меня проблема при попытке получить значения конкретных столбцов в dataGridView и добавить их в PdtPtable. Но значения, добавленные в таблицу, повторяются, например, строка дважды добавляется дважды. Я пытался пройти через каждую строку и каждую строку через каждый столбец.dataGridView to pdf with itextsharp

PdfPTable pdfTable= new PdfPTable(5); 
foreach(DataGridViewRow row in dataGridView1.Rows) { 
    foreach (DataGridViewCell celli in row.Cells) { 
     try { 
      pdfTable.AddCell(celli.Value.ToString()); 
     } 
     catch { } 
    } 
    doc.Add(pdfTable); 
} 

ответ

1

Я исправил отступы в фрагменте кода. Теперь вы можете увидеть, что вы делаете неправильно, в одном взгляде.

У вас есть:

PdfPTable pdfTable= new PdfPTable(5); 
foreach(DataGridViewRow row in dataGridView1.Rows) { 
    foreach (DataGridViewCell celli in row.Cells) { 
     try { 
      pdfTable.AddCell(celli.Value.ToString()); 
     } 
     catch { } 
    } 
    doc.Add(pdfTable); 
} 

Это означает, что вы создаете таблицу, добавив его столько раз, сколько строк, следовательно, повторение строк.

Вы должны иметь:

PdfPTable pdfTable= new PdfPTable(5); 
foreach(DataGridViewRow row in dataGridView1.Rows) { 
    foreach (DataGridViewCell celli in row.Cells) { 
     try { 
      pdfTable.AddCell(celli.Value.ToString()); 
     } 
     catch { } 
    } 
} 
doc.Add(pdfTable); 

Или еще лучше:

PdfPTable pdfTable= new PdfPTable(5); 
foreach(DataGridViewRow row in dataGridView1.Rows) { 
    foreach (DataGridViewCell celli in row.Cells) { 
     pdfTable.AddCell(celli.Value.ToString()); 
    } 
} 
doc.Add(pdfTable); 

Теперь вы добавляете таблицу только один раз.

+0

спасибо большое, это действительно помогло мне – Erduan

+1

Кроме того, избавиться от 'Try/Catch', в этом контексте не может быть хорошего, только скрытые неоткрываемые ошибки. –