UserControl将GridView导出为PDF

可可

我有一个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> 
可可

这是我找到的解决方案:

protected void BtnPDF_Click(object sender, EventArgs e)
    {
        GridView gv = new GridView();
        gv.DataSource = SqlDataSource1;
        gv.DataBind();
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);

        gv.RenderControl(htw);

        var mem = new MemoryStream();

        Document document = new Document(PageSize.LETTER, 50, 50, 50, 50);
        PdfWriter.GetInstance(document,mem);

        document.Open();

        iTextSharp.text.html.simpleparser.HTMLWorker hw = new iTextSharp.text.html.simpleparser.HTMLWorker(document);
        hw.Parse(new StringReader(sw.ToString()));
        document.Close();

        Response.ClearContent();
        Response.ClearHeaders();
        Response.ContentType = "application/pdf";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + DateTime.Now);

        Response.BinaryWrite(mem.ToArray());
        Response.End();
        Response.Flush();
        Response.Clear();
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将网格导出为pdf

来自分类Dev

使用图像列之一将Gridview数据导出为PDF

来自分类Dev

将gridview数据导出为xlsx格式?

来自分类Dev

Kendo将多个图表导出为pdf

来自分类Dev

将Attlassian Confluence Wiki导出为PDF

来自分类Dev

将div的内容导出为PDF

来自分类Dev

使用POI将DOC导出为PDF

来自分类Dev

从Python将SSRS报告导出为PDF

来自分类Dev

将div的内容导出为PDF

来自分类Dev

将文本从网站导出为pdf

来自分类Dev

将Attlassian Confluence Wiki导出为PDF

来自分类Dev

将treetable primefaces导出为pdf

来自分类Dev

将 xtable 导出为 pdf 文件

来自分类Dev

将 html 导出为 pdf 横向模式

来自分类Dev

将多页的 html 导出为 pdf

来自分类Dev

将Gridview导出到Excel,并且PDF无法正常工作。

来自分类Dev

将Gridview导出为具有图像的excel

来自分类Dev

将Gridview导出为具有图像的excel

来自分类Dev

将Excel导出为PDF 0显示为(?)

来自分类Dev

导出为pdf SSRS

来自分类Dev

如何将JIRA报告导出为PDF?

来自分类Dev

将具有大量列的html表导出为PDF

来自分类Dev

将报告导出为PDF时,更改字体

来自分类Dev

wicked_pdf将html链接导出为纯文本

来自分类Dev

Excel VBA无法将PageSetup正确导出为PDF

来自分类Dev

如何使用iText将越南文字导出为PDF

来自分类Dev

无法使用iText将越南字符导出为PDF

来自分类Dev

不使用iText将内容导出为pdf

来自分类Dev

使用JSPdf生成将整个html页面导出为pdf