Я хочу экспортировать gridview
в файл pdf
.Экспорт gridview в pdf-файл в asp.net
Исходный код
<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);
Примечание:
Эта страница внутри главной страницы.
update Это моя ошибка.
Элемент управления «ContentPlaceHolder1_grdLoanInquery» типа «GridView» должен быть помещен в тег формы с помощью runat = server.
Ваше прикрепленное изображение не ясное ... plz добавьте ошибку, которую вы получаете ... –
Я приложил свою ошибку. –
Ошибка: «должно быть помещено внутри тега формы с помощью runat = server' - Пожалуйста, подтвердите, что вы удовлетворяете этому утверждению? – Stuart