【问题标题】:Import Gridview to pdf将 Gridview 导入为 pdf
【发布时间】:2016-06-11 15:09:24
【问题描述】:

我需要将 asp.net 中网格视图中的数据导入 pdf 文件 这是我的网格视图

<asp:GridView ID="gvValues" runat="server" Width="100%" AllowPaging="True" PagerSettings-Mode="NumericFirstLast"
    AutoGenerateColumns="False" CellPadding="0" PageSize="15" ItemType="Tayf.Models.Product" CssClass="table-striped table-condensed table table-bordered table-hover"
    OnRowDataBound="gvValues_RowDataBound" OnPageIndexChanging="gvValues_PageIndexChanging" meta:resourcekey="gvValuesResource1" EmptyDataText="No Products in your Pos">
        <EmptyDataRowStyle Font-Bold="True" Font-Size="16pt" ForeColor="Red" />
           <RowStyle Wrap="true" />
               <Columns>
                    <asp:TemplateField HeaderText="#">
                       <ItemTemplate><%# gvValues.PageSize*gvValues.PageIndex+ Container.DisplayIndex+1  %></ItemTemplate>
                     </asp:TemplateField>
                      <asp:BoundField DataField="Barcode" ReadOnly="true" HeaderText="Barcode" meta:resourcekey="BoundFieldResource1" />
                     <asp:BoundField DataField="Description" ReadOnly="true" HeaderText="Item Name" meta:resourcekey="BoundFieldResource2" />
                      <asp:BoundField DataField="Price" DataFormatString="{0:#.00}" ReadOnly="true" HeaderText="Price" meta:resourcekey="BoundFieldResource3" />
                      <asp:TemplateField HeaderText="Notes">
                      <ItemTemplate><%# Item==null?"":  Item.PosInvoiceDetail == null || Item.PosInvoiceDetail.Count<1?"": "Invoice ID:" +  Item.PosInvoiceDetail.First().PosInvoiceMasterID.ToString()  %></ItemTemplate>
                      </asp:TemplateField>
                </Columns>

</asp:GridView>

还有这个按钮

<asp:Button  ID="importData" runat="server" CssClass="btn-default" Text="Import To PDF" OnClick="importData_Click"></asp:Button>

这是我的代码

 protected void importData_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);
            gvValues.AllowPaging = false;
            gvValues.DataBind();
            gvValues.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(); 
        }

但我有一个错误

说的是

System.Web.dll 中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理

附加信息:“GridView”类型的控件“MainContent_gvValues”必须放置在带有 runat=server 的表单标记内。

【问题讨论】:

  • 不要认为它是导出一个网格视图。导出基础数据。
  • @mason 对不起,我编辑了,我需要从 gridview 导入数据到 pdf 文件
  • 我知道你的意思,但在方程式中根本不要考虑网格视图。获取基础数据并使用它来生成您的 PDF。
  • @mason 请看一下这个问题stackoverflow.com/questions/37766985/…
  • 为此您可以轻松使用 jquery 插件..

标签: c# asp.net pdf gridview


【解决方案1】:
  • 当尝试将 GridView 控件导出为 Word、Excel、PDF、CSV 或任何其他格式时,会发生此异常。这里.net编译器认为控件没有添加到表单中并被渲染

这个问题的解决方案是在 CS 中编写下面的代码。文件

   public override void VerifyRenderingInServerForm(Control control)
    {
        /* Confirms that an HtmlForm control is rendered for the specified AS.net
           server control at run time. */

    }

【讨论】:

    猜你喜欢
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2014-07-16
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多