0

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

4
Contributors
6
Replies
11
Views
6 Years
Discussion Span
Last Post by Rahuls45
0

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

0

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");
           
            
       
       
    }
0

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.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.