Hai ,

I used gridview for student list , and export it to pdf.
But the 2nd column is not need to export. I make the gridview's 2'nd column visible false.

GrdStudent.Columns[2].Visible = false;

But pdf file contain this column. Can you help me to solve it.

Regards,
sreevidya

Recommended Answers

All 6 Replies

Hai ,

is there any solution for this problem.

Thanks in advance.

might need to see more of the code than just that one line. That doesn't really tell anyone what is going on.

Hai ,
the code i used is:

protected void lnkStudentPDF_Click(object sender, EventArgs e)
    {
        SchoolCommon ObjCommon = new SchoolCommon();        
        try
        {
            GrdStudent.AllowPaging = false;
            DataTable dt = (ViewState["StudentList"]) as DataTable;
            GrdStudent.DataSource = dt;
            GrdStudent.DataBind();
                
                GrdStudent.Columns[2].Visible = false;
                ObjCommon.ExportToPDFnewFormat_WithButtons(GrdStudent, true, "Student Report", 6);
            }
            
            LblErr.Text = "Successfully Exported";
        }
        
        catch (System.Threading.ThreadAbortException lException)
        {

            // do nothing

        }

        finally
        {
            GrdStudent.Columns[2].Visible = true;
        }
    }
public void ExportToPDFnewFormat_WithButtons(GridView gvReport, bool LandScape, string strHeader, int iColoumnNo)
    {
       
            int noOfColumns = 0, noOfRows = 0;
            DataTable tbl = null;
            gvReport.AllowPaging = false;
            if (gvReport.AutoGenerateColumns)
            {
                tbl = gvReport.DataSource as DataTable; // Gets the DataSource of the GridView Control.
                noOfColumns = tbl.Columns.Count;
                noOfRows = tbl.Rows.Count;
            }
            else
            {
                // noOfColumns = gvReport.Columns.Count;
                noOfColumns = iColoumnNo;
                noOfRows = gvReport.Rows.Count;
            }

            float HeaderTextSize = 14;
            float ReportNameSize = 16;
            float ReportTextSize = 12;
            float ApplicationNameSize = 10;

            // Creates a PDF document

            Document document = null;
            if (LandScape == true)
            {
                // Sets the document to A4 size and rotates it so that the     orientation of the page is Landscape.
                document = new Document(PageSize.A4.Rotate(), 0, 0, 15, 5);
            }
            else
            {
                document = new Document(PageSize.A4, 0, 0, 15, 5);
            }

            // Creates a PdfPTable with column count of the table equal to no of columns of the gridview or gridview datasource.
            iTextSharp.text.pdf.PdfPTable mainTable = new iTextSharp.text.pdf.PdfPTable(noOfColumns);

            // Sets the first 4 rows of the table as the header rows which will be repeated in all the pages.
            mainTable.HeaderRows = 4;

            // Creates a PdfPTable with 2 columns to hold the header in the exported PDF.
            iTextSharp.text.pdf.PdfPTable headerTable = new iTextSharp.text.pdf.PdfPTable(2);

            // Creates a phrase to hold the application name at the left hand side of the header.
            Phrase phApplicationName = new Phrase("School Administration", FontFactory.GetFont("Arial", ApplicationNameSize, iTextSharp.text.Font.NORMAL));

            // Creates a PdfPCell which accepts a phrase as a parameter.
            PdfPCell clApplicationName = new PdfPCell(phApplicationName);
            // Sets the border of the cell to zero.
            clApplicationName.Border = PdfPCell.NO_BORDER;
            // Sets the Horizontal Alignment of the PdfPCell to left.
            clApplicationName.HorizontalAlignment = Element.ALIGN_LEFT;

            // Creates a phrase to show the current date at the right hand side of the header.
            Phrase phDate = new Phrase(DateTime.Now.Date.ToString("dd/MM/yyyy"), FontFactory.GetFont("Arial", ApplicationNameSize, iTextSharp.text.Font.NORMAL));

            // Creates a PdfPCell which accepts the date phrase as a parameter.
            PdfPCell clDate = new PdfPCell(phDate);
            // Sets the Horizontal Alignment of the PdfPCell to right.
            clDate.HorizontalAlignment = Element.ALIGN_RIGHT;
            // Sets the border of the cell to zero.
            clDate.Border = PdfPCell.NO_BORDER;

            // Adds the cell which holds the application name to the headerTable.
            headerTable.AddCell(clApplicationName);
            // Adds the cell which holds the date to the headerTable.
            headerTable.AddCell(clDate);
            // Sets the border of the headerTable to zero.
            headerTable.DefaultCell.Border = PdfPCell.NO_BORDER;

            // Creates a PdfPCell that accepts the headerTable as a parameter and then adds that cell to the main PdfPTable.
            PdfPCell cellHeader = new PdfPCell(headerTable);
            cellHeader.Border = PdfPCell.NO_BORDER;
            // Sets the column span of the header cell to noOfColumns.
            cellHeader.Colspan = noOfColumns;
            // Adds the above header cell to the table.
            mainTable.AddCell(cellHeader);

            // Creates a phrase which holds the file name.
            Phrase phHeader = new Phrase(strHeader, FontFactory.GetFont("Arial", ReportNameSize, iTextSharp.text.Font.BOLD));
            PdfPCell clHeader = new PdfPCell(phHeader);
            clHeader.Colspan = noOfColumns;
            clHeader.Border = PdfPCell.NO_BORDER;
            clHeader.HorizontalAlignment = Element.ALIGN_CENTER;
            mainTable.AddCell(clHeader);

            // Creates a phrase for a new line.
            Phrase phSpace = new Phrase("\n");
            PdfPCell clSpace = new PdfPCell(phSpace);
            clSpace.Border = PdfPCell.NO_BORDER;
            clSpace.Colspan = noOfColumns;
            mainTable.AddCell(clSpace);

            // Sets the gridview column names as table headers.
            for (int i = 0; i < noOfColumns; i++)
            {
                Phrase ph = null;

                if (gvReport.AutoGenerateColumns)
                {
                    ph = new Phrase(tbl.Columns[i].ColumnName, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
                }
                else
                {
                    ph = new Phrase(gvReport.Columns[i].HeaderText, FontFactory.GetFont("Arial", HeaderTextSize, iTextSharp.text.Font.BOLD));
                }

                mainTable.AddCell(ph);
            }

            // Reads the gridview rows and adds them to the mainTable
            for (int rowNo = 0; rowNo < noOfRows; rowNo++)
            {
                for (int columnNo = 0; columnNo < noOfColumns; columnNo++)
                {
                    if (gvReport.AutoGenerateColumns)
                    {
                        string s = gvReport.Rows[rowNo].Cells[columnNo].Text.Trim();
                        Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
                        mainTable.AddCell(ph);
                    }
                    else
                    {

                        if (gvReport.Columns[columnNo] is TemplateField)
                        {
                            string type = gvReport.Rows[rowNo].Cells[columnNo].Controls[0].ToString();
                            Control ObjControl = new Control();

                            string s = "";

                            Label tt = new Label();
                            if (gvReport.Rows[rowNo].Cells[columnNo].Controls.Count == 1)
                            {
                                DataBoundLiteralControl lc = gvReport.Rows[rowNo].Cells[columnNo].Controls[0] as DataBoundLiteralControl;
                                s = lc.Text.Trim();
                            }

                            else
                            {
                                if (gvReport.Rows[rowNo].Cells[columnNo].Controls.Count == 3)
                                {
                                    ObjControl = gvReport.Rows[rowNo].Cells[columnNo].Controls[1];
                                    if (ObjControl.GetType().Name == "Label")
                                    {
                                        s = ((Label)ObjControl).Text;


                                    }


                                }
                            }


                            Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
                            mainTable.AddCell(ph);

                        }
                        else
                        {
                            string s = gvReport.Rows[rowNo].Cells[columnNo].Text.Trim();
                            Phrase ph = new Phrase(s, FontFactory.GetFont("Arial", ReportTextSize, iTextSharp.text.Font.NORMAL));
                            mainTable.AddCell(ph);
                        }
                    }
                }

                // Tells the mainTable to complete the row even if any cell is left incomplete.
                mainTable.CompleteRow();
            }

            // Gets the instance of the document created and writes it to the output stream of the Response object.
                PdfWriter.GetInstance(document, HttpContext.Current.Response.OutputStream);
 
            // Creates a footer for the PDF document.
            HeaderFooter pdfFooter = new HeaderFooter(new Phrase(), true);
            pdfFooter.Alignment = Element.ALIGN_CENTER;
            pdfFooter.Border = iTextSharp.text.Rectangle.NO_BORDER;

            // Sets the document footer to pdfFooter.
            document.Footer = pdfFooter;
            // Opens the document.
            document.Open();
            // Adds the mainTable to the document.
            document.Add(mainTable);
            // Closes the document.
            document.Close();

            HttpContext.Current.Response.ContentType = "application/pdf";
            HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename= SampleExport.pdf");
           
            
       
       
    }

It would probably be best to just not include that column at all if possible. Something like

for (int rowNo = 0; rowNo < noOfRows; rowNo++)
{
    for (int columnNo = 0; columnNo < noOfColumns; columnNo++)
    {
        if (columnNo != 2) // or whichever index you want to leave out.
        {
        // rest of code

might work. If the gridview already has columns defined you may need to clear them.

Hi,
Any one tell me how to hide columns

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.