如何在导出到pdf时为ASP.NET gridview中的特定列设置列宽? [英] How to set column width for a particular column in ASP.NET gridview while exporting to pdf?
问题描述
我通过数据集中的itextsharp将gridview导出为PDF。我想在asp.net gridview中为特定列设置更高的列宽,同时导出为pdf,因为其中的数据正在被切断。我为该特定列添加了Row Data Bound下的列宽。
if(e.Row.RowType == DataControlRowType.DataRow)
{
grdExport.Columns [9] .ItemStyle.Width = 300;
}
我尝试过:
来源中的gridview
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;
}
推荐答案
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();
这篇关于如何在导出到pdf时为ASP.NET gridview中的特定列设置列宽?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!