【发布时间】:2014-01-09 13:39:39
【问题描述】:
我有一个 UserControl,我正在尝试将我的 GridView 表导出为 PDF。我可以很好地制作 CSV 文件,但在尝试制作 PDF 时出现错误。 (我正在使用 iTextSharp 库)这是我得到的错误:
“'GridView' 类型的控件 'DoNotAddList_1_GridView1' 必须放在带有 runat=server 的表单标签内。”
我的 html 中有一个表单标签,我尝试将它添加到 ascx 文件中,但没有任何效果。我发现很多人收到此错误,大多数人都建议将其添加到 ascx.cs 文件的代码中:
public override void VerifyRenderingInServerForm(Control control) { }
但这给了我这个错误“找不到合适的方法来覆盖......”
我不知道该怎么办。我一直无法找到解决方案。请帮忙!!
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
public partial class UserControls_DoNotAddListControl : System.Web.UI.UserControl
{
protected void PDF_Click(object sender, EventArgs e)
{
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition",
"attachment;filename=GridViewExport.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
GridView1.AllowPaging = false;
GridView1.DataBind();
GridView1.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
}
protected void CSV_Click(object sender, EventArgs e)
{
Response.ClearContent();
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "BloombergDaily.csv"));
Response.ContentType = "application/text";
GridView1.AllowPaging = false;
GridView1.DataBind();
StringBuilder strbldr = new StringBuilder();
for (int i = 0; i < GridView1.Columns.Count; i++)
{
strbldr.Append(GridView1.Columns[i].HeaderText + ',');
}
strbldr.Append("\n");
for (int j = 0; j < GridView1.Rows.Count; j++)
{
for (int k = 0; k < GridView1.Columns.Count; k++)
{
strbldr.Append(GridView1.Rows[j].Cells[k].Text + ',');
}
strbldr.Append("\n");
}
Response.Write(strbldr.ToString());
Response.End();
}
}
这是我在 aspx 文件中的内容:
<form id="form1" runat="server" action="/">
<div id="donotadd" class="tableWrapper">
<div id="tabs1">
<p>
<div id="tabs-1" >
<div id="DoNotAddListMacro" class="dataTable table_Center">
<umbraco:Macro ID="Macro1" Alias="DoNotAddListControl" runat="server"></umbraco:Macro>
</div>
</div>
</p>
</div>
</div>
</form>
【问题讨论】:
标签: c# asp.net pdf gridview itextsharp