2017-03-06 42 views
0

我想将数据从DataGridView的出口与iTextSharp的库PDF文件iTextSharp的错误对象引用未设置为一个实例对象

但是,当我点击Export Pdf时发生此错误。

未将对象引用设置为对象的实例。

线路错误

//fetch the header text 
cellText = Server.HtmlDecode(gvProducts.HeaderRow.Cells[colIndex].Text); 

我有这个问题只需要变量rowCountProducts等于零。

任何人都可以帮助我吗?

在此先感谢 代码如下。

if (rowCountProducts >= 0) 
{ 
    //link button column is excluded from the list 
    int colCount = gvProducts.Columns.Count - 1; 

    //Create a table 
    table = new PdfPTable(colCount); 
    table.HorizontalAlignment = 1; 
    table.WidthPercentage = 100; 

    //create an array to store column widths 
    int[] colWidths = new int[gvProducts.Columns.Count]; 

    PdfPCell cell; 
    string cellText; 

     //create the header row 
     for (int colIndex = 0; colIndex < colCount; colIndex++) 
     { 
      //set the column width 
      table.SetWidths(new int[] { 0, 15, 15, 20, 20, 15, 8, 12, 20, 20, 10, 12, 10, 20, 12, 10, 10, 12, 30, 8, 12, 12, 10 }); 


      //fetch the header text 
      cellText = Server.HtmlDecode(gvProducts.HeaderRow.Cells[colIndex].Text); 

      //create a new cell with header text 
      BaseFont bf = BaseFont.CreateFont(
            BaseFont.HELVETICA, 
            BaseFont.CP1252, 
            BaseFont.EMBEDDED, 
            false); 
      iTextSharp.text.Font font = new iTextSharp.text.Font(bf, 10, iTextSharp.text.Font.BOLD, BaseColor.WHITE); 
      cell = new PdfPCell(new Phrase(cellText.Replace("<br />", Environment.NewLine), font)); 
      cell.HorizontalAlignment = Element.ALIGN_CENTER; 
      cell.VerticalAlignment = Element.ALIGN_MIDDLE; 
      cell.FixedHeight = 55f; 

      //set the background color for the header cell 
      cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#a52a2a")); 

      //add the cell to the table. we dont need to create a row and add cells to the row 
      //since we set the column count of the table to 4, it will automatically create row for 
      //every 4 cells 
      table.AddCell(cell); 
     } 

    //export rows from GridView to table 
    for (int rowIndex = 0; rowIndex < gvProducts.Rows.Count; rowIndex++) 
    { 
     if (gvProducts.Rows[rowIndex].RowType == DataControlRowType.DataRow) 
     { 
      for (int j = 0; j < gvProducts.Columns.Count - 1; j++) 
      { 
       //fetch the column value of the current row 
       cellText = Server.HtmlDecode(gvProducts.Rows[rowIndex].Cells[j].Text); 

       //create a new cell with column value 
       cell = new PdfPCell(new Phrase(cellText, FontFactory.GetFont("PrepareForExport", 8))); 
       cell.HorizontalAlignment = Element.ALIGN_CENTER; 
       cell.VerticalAlignment = Element.ALIGN_MIDDLE; 
       cell.FixedHeight = 55f; 

       string cellText2 = Server.HtmlDecode(gvProducts.Rows[rowIndex].Cells[6].Text); 

       if (cellText2.ToString() == "B") 
       { 
        cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#f5f5dc")); 
       } 
       if (cellText2.ToString() == "L") 
       { 
        cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#dcf5f5")); 
       } 
       if (cellText2.ToString() == "T") 
       { 
        cell.BackgroundColor = new BaseColor(System.Drawing.ColorTranslator.FromHtml("#ffe9de")); 
       } 

       //add the cell to the table 
       table.AddCell(cell); 
      } 
     } 
    } 
} 
+0

你说'cellText = Server.HtmlDecode(gvProducts.HeaderRow.Cells [colIndex] .Text);'是错误行。据我所见,该行上没有引用iTextSharp类。因此,你应该把你自己的错误搜索和这个问题集中在其他细节上 - 像iTextSharp一样集中一个问题,这样可以避开那些对iTextSharp不太了解的人,但是可能非常关注' Server.HtmlDecode(gvProducts.HeaderRow.Cells [colIndex]。文本)'。 – mkl

回答

0

如果你的问题是,当

rowCountProducts

等于零,请试试这个。

我希望这个帮助。

//fetch the header text 
//start 
if (rowCountProducts > 0) 
{ 
    cellText = Server.HtmlDecode(gvProducts.HeaderRow.Cells[colIndex].Text); 
} 
else 
{ 
    cellText = ""; 
} 
//end 
相关问题