【问题标题】:Hide / Remove columns when exporting to PDF document using iTextSharp使用 iTextSharp 导出到 PDF 文档时隐藏/删除列
【发布时间】:2018-01-27 04:05:58
【问题描述】:

我有一个带有数据的 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"/>

【问题讨论】:

标签: asp.net itext


【解决方案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);
           } 
        }

基于可见性,您可以避免为所有行创建该列

希望这会有所帮助!

【讨论】:

  • 我的 if 语句至少现在可以做一些事情,但是我仍然在努力寻找 else 条件中的逻辑 ` if (gvSchedule.Columns[0].Visible != false) { PdfPCell pdfCell = 新 PdfPCell(新短语(tableCell.Text)); pdfTable.AddCell(pdfCell); } else { //不确定在我的 else 语句中要做什么 }`
  • 我认为您不需要其他任何东西,因为我们只需要隐藏列。没有别的吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-09
  • 2011-08-17
  • 2011-04-23
  • 2020-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-02-08
相关资源
最近更新 更多