2012-12-05 3 views
0

pdf에서 여러 개의 gridview를 내보내려고하는데 HtmlTextWriter에서 렌더링되지 않습니다. gridviews가 동적으로 생성되어 중계 컨트롤에 중첩됩니다. 데이터 원본으로 나는 데이터 테이블을 사용하고 있으며 테이블이 브라우저에 (데이터와 함께) 표시되지만 PDF 파일로 렌더링되지 않습니다.중첩 된 gridview가 PDF로 내 보내지 않았습니다.

코드 아래 고마워요!

ASPX :

<asp:Panel ID="pnlContent" runat="server"> 
     <asp:Repeater ID="rptResult" runat="server" OnItemDataBound="rptResult_ItemDataBound" EnableViewState="false"> 
      <HeaderTemplate>         
       Detalii test<br /> 
      </HeaderTemplate> 
      <ItemTemplate> 
       <asp:Literal ID="ltGroupId12" runat="server" Visible="false" Text='<%# Eval("GroupId12")%>'></asp:Literal>      
       <asp:GridView ID="gvResultDetail" runat="server" AutoGenerateColumns="false" ShowHeader="false" GridLines="Both" 
        OnRowDataBound="gvResultDetail_RowDataBound"> 
        <Columns> 
         <asp:BoundField DataField="Group1Desc" ItemStyle-CssClass="gridviewItemGroup1TestResult" /> 
         <asp:BoundField DataField="Group2Desc" ItemStyle-CssClass="gridviewItemGroup2TestResult"/> 
         <asp:TemplateField ItemStyle-CssClass="gridviewItemStdTestResult"> 
          <ItemTemplate> 
           test 
           <asp:Label ID="lblRequestedResultText" runat="server" Visible="false" Text="Position request<br />Total: "></asp:Label> 
           <asp:Label ID="lblRequestedResultValue" runat="server" Visible="false" Text='<%# Eval("RequestedResult")%>'></asp:Label>         
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-CssClass="gridviewItemStdTestResult"> 
          <ItemTemplate> 
           <asp:Label ID="lblActualResultText" runat="server" Visible="false" Text="Answer level<br />Total: "></asp:Label> 
           <asp:Label ID="lblActualResultValue" runat="server" Visible="false" Text='<%# Eval("ActualResult")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-CssClass="gridviewItemStdTestResult"> 
          <ItemTemplate> 
           <asp:Label ID="lblDifferencesText" runat="server" Visible="false" Text="Difference:"></asp:Label> 
           <asp:Label ID="lblDifferencesValue" runat="server" Visible="false" Text='<%# Eval("Differences")%>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField ItemStyle-CssClass="gridviewItemStdTestResult"> 
          <ItemTemplate> 
           <asp:Label ID="lblPercentageText" runat="server" Visible="false" Text="KQ<br />"></asp:Label> 
           <asp:Label ID="lblPercentageValue" runat="server" Visible="false" Text='<%# Eval("Percentage") %>'></asp:Label> 
          </ItemTemplate> 
         </asp:TemplateField> 
         <asp:TemplateField Visible="false"> 
          <ItemTemplate> 
           <asp:Literal ID="ltGroupType" runat="server" Visible="false" Text='<%# Eval("RecordType")%>'></asp:Literal> 
           <asp:Literal ID="ltNoRows" runat="server" Visible="false" Text='<%# Eval("NoRows")%>'></asp:Literal> 
           <asp:Literal ID="ltBasicDomain" runat="server" Visible="false" Text='<%# Eval("BasicDomain")%>'></asp:Literal> 
          </ItemTemplate> 
         </asp:TemplateField> 
        </Columns> 
        <HeaderStyle CssClass="gridviewHeaderTestResult" /> 
        <RowStyle CssClass="gridviewRowTestResult" /> 
        <AlternatingRowStyle CssClass="gridviewRowTestResult" />     
       </asp:GridView> 
      </ItemTemplate>     
      <SeparatorTemplate> 
       <br /> 
      </SeparatorTemplate> 
      <FooterTemplate> 
       End 
      </FooterTemplate>   
     </asp:Repeater> 

     <br /> 
    </asp:Panel> 

ASPX.CS :

Response.ContentType = "application/pdf"; 
    Response.AddHeader("content-disposition", "attachment;filename=SDT.pdf"); 
    Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    StringWriter sw = new StringWriter(); 
    HtmlTextWriter hw = new HtmlTextWriter(sw); 
DataTable dtDetailedResult = (DataTable)Session["dtDetailedResult"]; 
    rptResult.DataSource = dtDetailedResult; 
    rptResult.DataBind();   
    pnlContent.RenderControl(hw); 
StringReader sr = new StringReader(sw.ToString()); 
    Document pdfDoc = new Document(PageSize.A4, 70f, 70f, 20f, 0f); 
    HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
    PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
    pdfDoc.Open(); 
    htmlparser.Parse(sr); 
    pdfDoc.Close(); 
    Response.Write(pdfDoc); 
    Response.End(); 

답변

0

나는 당신이 인터넷에서 itextsharp.dll을 다운로드에 배치 할 필요가 중첩있는 GridViews 약하지만 PDF로있는 gridview를 내보내기 확실하지 않다 bin 폴더에 복사하십시오.

gridview를 pdf로 내보내는 예제 출력 예가 있습니다. 여기에서 참조 할 수 있습니다.

export-gridview-to-pdf

는 도움이되기를 바랍니다.

+0

이것은 정확히 내가 사용하는, itextsharp.dll -하지만 aspx 테이블/gridviews는 이미 htmltextwriter에 의해 "보여지는"것으로 정의되어 있으며 pdf 파일에 표시되며 중첩 된 컨트롤을 사용하여 동적으로 생성 된 항목은 렌더링되지 않습니다. –

+0

나는 datatable 소스에서 내 데이터로 임베드 된 html 태그를 작성하는 것으로 끝났습니다. 다른 솔루션이 있으면 알려주십시오. hw.Write ("

"); hw.Write (""); hw.Write ("
"); hw.Write (dtDetailedResult.Rows [i] [ "Group1Desc"]. ToString()); –

관련 문제