Click here to Skip to main content
15,887,214 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
I am exporting the gridview to PDF via itextsharp from a dataset. I want to set column width higher for a particular column in asp.net gridview while exporting to pdf as the data with in it is getting cut off or so. I added column width under Row Data Bound for that particular column.

if (e.Row.RowType == DataControlRowType.DataRow)
{
grdExport.Columns[9].ItemStyle.Width = 300;

}

What I have tried:

gridview in source
<asp:GridView ID="grdExport" runat="server" Width="100%">
                              <HeaderStyle BackColor="White" Font-Bold="true" ForeColor="Black " />

                          </asp:GridView>

under button click
grdExport.DataSource = dt;
                grdExport.DataBind();
                Response.ContentType = "application/pdf";
                Response.AddHeader("content-disposition", "attachment;   filename=" + strReportHeading.Trim() + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".pdf");
                //Response.Cache.SetCacheability(HttpCacheability.NoCache);
                StringWriter sw = new StringWriter();
                HtmlTextWriter hw = new HtmlTextWriter(sw);
                grdExport.AllowPaging = false;
                grdExport.DataBind();
                grdExport.RenderControl(hw);
                // grdExport.HeaderStyle.Width = "1";
                // grdExport.HeaderRow.Style.Add("font-size", "10px");
                grdExport.Style.Add("text-decoration", "none");
                grdExport.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
                grdExport.Style.Add("font-size", "8px");
                //string strHead = strReportHeading + " FOR USER " + drdUserId.SelectedItem.Text.ToString();
                string strHead = strReportHeading;
                StringBuilder strbn = new StringBuilder();
                string Imagepath = Common.SITE_URL + "loginLogo.jpg";
                //strbn.Append("<div style='float:right'><img alt='' src='" + Imagepath + "'height='50px'/></div> <span style='float:right;text-align:right;font-weight:bold;'>Date:" + DateTime.Today.ToString("dd-MMM-yyyy") + "</span><div style='text-align:center;font-weight:bold;background-color:White; width:100%;font-size:20px;text-decoration:underline'> " + strHead + "</div> <br/>");
                strbn.Append("<span style='float:right;text-align:right;font-weight:bold;'>Date:" + DateTime.Today.ToString("dd-MMM-yyyy") + "</span><div style='text-align:center;font-weight:bold;background-color:White; width:100%;font-size:20px;text-decoration:underline'> " + strHead + "</div> <br/>");
                strbn.Append(sw.ToString());
                StringReader sr = new StringReader(strbn.ToString());
                Document pdfDoc = new Document(PageSize.A2, 7f, 7f, 7f, 0f);
                HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
                PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
                pdfDoc.Open();
                htmlparser.Parse(sr);
                pdfDoc.Close();
                Response.Flush();
                Response.Write(pdfDoc);
                Response.Flush();
                Response.Close();

under row databound
if (e.Row.RowType == DataControlRowType.DataRow)
       {
           grdExport.Columns[9].ItemStyle.Width = 1000;

       }
Posted
Updated 19-Apr-17 22:07pm
v2

1 solution

C#
StringWriter stw = new StringWriter();
HtmlTextWriter htextw = new HtmlTextWriter(stw);
grdExport.HeaderRow.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
grdExport.HeaderRow.Style.Add("font-size", "8.20px");
grdExport.HeaderRow.Style.Add("color", "#284775");
grdExport.Style.Add("font-family", "Arial, Helvetica, sans-serif;");
grdExport.Style.Add("font-size", "8px");
grdExport.Columns[3].ItemStyle.Width =Unit.Pixel(10);
grdExport.RenderControl(htextw);
Document document = new Document(iTextSharp.text.PageSize.LETTER.Rotate(), 10, 10, 42, 35);
string path = "sample".pdf";
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(path, FileMode.Create));            
StringReader str = new StringReader(stw.ToString());
iTextSharp.text.html.simpleparser.HTMLWorker htmlworker = new HTMLWorker(document);
htmlworker.Parse(str);
Response.Write(document);
document.Close();
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900