使用iTextSharp导出为PDF文档时隐藏/删除列

时间:2018-01-26 19:40:03

标签: asp.net itext

我有一个包含数据的GridView。 Gridview中的某些列隐藏visible=false

我正在尝试使用iTextSharp将GridView导出为PDF文档,但设置为visible=false的列也会显示在我的PDF文档中,我不希望这样。

如何在没有隐藏列的情况下将GridView数据导出到PDF文档?

这是我到目前为止所做的:

protected void Button1_Click(object sender, EventArgs e)
{

    PdfPTable pdfTable = new PdfPTable(gvSchedule.HeaderRow.Cells.Count);
    foreach (GridViewRow gridViewRow in gvSchedule.Rows)
    {
        gvSchedule.Columns[0].Visible = false;
        gvSchedule.Columns[1].Visible = false;
        foreach (TableCell tableCell in gridViewRow.Cells)
        {
            gvSchedule.Columns[0].Visible = false;
            gvSchedule.Columns[1].Visible = false;

            PdfPCell pdfCell = new PdfPCell(new Phrase(tableCell.Text));
            pdfTable.AddCell(pdfCell);
        }
    }
    Document pdfDocument = new Document(PageSize.A4, 10f, 10f, 10f, 10f);
    PdfWriter.GetInstance(pdfDocument, Response.OutputStream);

    pdfDocument.Open();
    pdfDocument.Add(pdfTable);
    pdfDocument.Close();

    Response.ContentType = "application/pdf";
    Response.AppendHeader("content-disposition", "attachment;filename=mySchedule.pdf");
    Response.Write(pdfDocument);
    Response.Flush();
    Response.End();
}

我不希望在PDF文档上显示的两列是:

 <asp:BoundField DataField="Address" visible="false" HeaderText="Address" SortExpression="Address"/>

 <asp:BoundField DataField="Area" visible="false" HeaderText="Area" SortExpression="Area"/>

1 个答案:

答案 0 :(得分:1)

我不熟悉iTextSharp

但是看看你的代码

//enter condition here to not add the row 
         foreach (TableCell tableCell in gridViewRow.Cells)
        {
            gvSchedule.Columns[0].Visible = false;
            gvSchedule.Columns[1].Visible = false;
          if(not visiblity false)
          {
            PdfPCell pdfCell = new PdfPCell(new Phrase(tableCell.Text));
            pdfTable.AddCell(pdfCell);
           } 
        }

这种基于可见性的方法可以避免为所有行创建该列

希望这有帮助!