导入到iTextSharp时从dataGridView中删除CheckBox列

时间:2015-03-06 08:38:15

标签: c# datagridview itextsharp

我正在将DataGridview导入Itextsharp,导入正常但是我在网格中也有一个复选框列,我不想在pdf中导入该列,有没有办法省略它。

以下是代码。

PdfPTable pdfTable9 = new PdfPTable(dataGridView2.ColumnCount);
pdfTable9.SetWidths(new float[] { 5f, 10f, 10f, 7f, 9f, 3f});
pdfTable9.DefaultCell.Padding = 3;
pdfTable9.WidthPercentage = 100;
pdfTable9.HorizontalAlignment = Element.ALIGN_RIGHT;
pdfTable9.DefaultCell.BorderWidth = 1;

foreach (DataGridViewColumn column in dataGridView2.Columns)
{
    PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText,   fontTitle2));
    cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
    pdfTable9.AddCell(cell);
}

foreach (DataGridViewRow row in dataGridView2.Rows)
{
     foreach (DataGridViewCell cell in row.Cells)
     {
          pdfTable9.AddCell(new Phrase(cell.Value.ToString(), fontTitle));
     }
}

1 个答案:

答案 0 :(得分:0)

我目前没有IDE,因此下面可能会出现拼写错误,但您可以将已知索引硬编码为跳过逻辑,也可以检查每个column对象。

//Set our skip column to an invalid index to start with
var colToSkip = -1;

//Index loop variable
var i = 0;
foreach (DataGridViewColumn column in dataGridView2.Columns)
{
    if( column is DataGridViewCheckBoxColumn)
    {
        colToSkip = i;
    }
    else
    {
        PdfPCell cell = new PdfPCell(new Phrase(column.HeaderText,   fontTitle2));
        cell.BackgroundColor = new iTextSharp.text.BaseColor(240, 240, 240);
        pdfTable9.AddCell(cell);
    }
    i++;
}

foreach (DataGridViewRow row in dataGridView2.Rows)
{
     i = 0;
     foreach (DataGridViewCell cell in row.Cells)
     {
         if( i != colToSkip )
         {
             pdfTable9.AddCell(new Phrase(cell.Value.ToString(), fontTitle));
         }
         i++;
     }
}