【发布时间】:2014-01-06 07:15:00
【问题描述】:
我想将gridview 导出到pdf 文件中。
源代码
<div id="divppdf" runat="server">
<asp:GridView ID="grdLoanInquery" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="PK_CustomerID" EmptyDataText="Record does not exists." Font-Bold="True" Font-Size="Small" Height="121px" PageSize="5" ShowFooter="True" Width="100%"
OnPageIndexChanging="grdLoanInquery_PageIndexChanging" OnRowCommand="grdLoanInquery_RowCommand">
<Columns>
<asp:BoundField DataField="PK_CustomerID" HeaderText="ID" InsertVisible="False" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" ReadOnly="True" SortExpression="PK_CustomerID">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="FirstName" HeaderText="Name" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="FirstName">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="BillingAmt" HeaderText="Billing Amount" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="BillingAmt">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="DpAmt" HeaderText="DP Amount" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="DpAmt">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="LoanAmt" HeaderText="Loan Amount" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="LoanAmt">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:BoundField DataField="InterestRate" HeaderText="Interest Rate" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle" SortExpression="InterestRate">
<ItemStyle HorizontalAlign="Center" VerticalAlign="Middle" />
</asp:BoundField>
<asp:TemplateField HeaderText="More" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:ImageButton ID="imgMore" runat="server" Height="22px" ImageUrl="~/Images/MoreDetail.png" ToolTip="More Details" Width="28px" CommandArgument='
<%# Eval("PK_CustomerID") %>
' CommandName="more" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Document" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<asp:ImageButton ID="imgDetail" runat="server" Height="22px" ImageUrl="~/Images/document1.png" ToolTip="Document Details" Width="28px" CommandArgument='
<%# Eval("PK_CustomerID") %>
' CommandName="document" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataRowStyle HorizontalAlign="Center" VerticalAlign="Middle" />
<EmptyDataTemplate>
<asp:Label ID="lblEmpty" runat="server" ForeColor="Red" Text="Record Does not exists.">
</asp:Label>
</EmptyDataTemplate>
<FooterStyle CssClass="gridFooter" HorizontalAlign="Center" VerticalAlign="Middle" />
<HeaderStyle BorderStyle="None" CssClass="gridHeader" />
<PagerStyle CssClass="gridHeader" HorizontalAlign="Center" VerticalAlign="Middle" />
<SelectedRowStyle BackColor="#A8D3FF" />
</asp:GridView>
</div>
代码:
divppdf.Visible = true;
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestPage.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);
divppdf.RenderControl(hw);
StringReader sr = new StringReader(sw.ToString());
Document pdfDoc = new Document(PageSize.A4, 80f, 80f, -2f, 35f);
HTMLWorker htmlparser = new HTMLWorker(pdfDoc);
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, Response.OutputStream);
pdfDoc.Open();
//head.WriteSelectedRows(0, -1, page.Width / 8, page.Height - pdfDoc.TopMargin + head.TotalHeight, writer.DirectContent);
//pdfDoc.Add(headerTbl);
htmlparser.Parse(sr);
pdfDoc.Close();
Response.Write(pdfDoc);
Response.End();
解释: 我的问题是我收到如下“错误”。
主要是我无法在上面的代码中获取div标签的内容。
divppdf.RenderControl(hw);
注意:
母版页内的这个页面。
更新 这是我的错误。
“GridView”类型的控件“ContentPlaceHolder1_grdLoanInquery”必须放置在带有 runat=server 的表单标记内。
【问题讨论】:
-
您附加的图像不清楚...请添加您遇到的错误...
-
我附上了我的错误信息。
-
错误说:
must be placed inside a form tag with runat=server- 请确认你满足这个说法? -
这个解决方案webblogsforyou.com/…帮助我解决了我的问题。
标签: c# asp.net pdf gridview export