【发布时间】: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 插件..