0

パッケージ iTextSharp を使用してグリッドビューを pdf にエクスポートしようとしています。

私は.aspxファイルでそれをやっています:

<form id="formOptions" runat="server">

            [...]

            <asp:GridView ID="gvReportingStockComp" runat="server" AutoGenerateColumns="false" Visible="true">

                <Columns>

                    <asp:BoundField DataField="cod_wo" HeaderText="N° OF" />
                    <asp:BoundField DataField="composant" HeaderText="Composant" />
                    <asp:BoundField DataField="BESOIN" HeaderText="Besoin/OF" />
                    <asp:BoundField DataField="BESOIN_T" HeaderText="Besoin total" />
                    <asp:BoundField DataField="stock_dispo" HeaderText="Stock dispo" />
                    <asp:BoundField DataField="QTE_RESTANTE" HeaderText="Qte restante" />

                </Columns>

            </asp:GridView>


        </form>

そして私のコードビハインドでは、 gridview を埋めます:

OracleConnection oConnexion = new OracleConnection();
oConnexion.ConnectionString = "X";
oConnexion.Open();

string reqStockCompTotal = "intitulé de ma requete"

OracleCommand cmdReqStockComp = new OracleCommand(reqStockCompTotal);
cmdReqStockComp.Connection = oConnexion;
OracleDataReader readerReqStockComp = cmdReqStockComp.ExecuteReader();

gvReportingStockComp.DataSource = readerReqStockComp;
gvReportingStockComp.DataBind();

oConnexion.Close();
oConnexion.Dispose();

エクスポートを作成するために次のコードを追加すると、うまくいきます。

Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=TestMES.pdf");
Response.Cache.SetCacheability(HttpCacheability.NoCache);

StringWriter sw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(sw);

gvReportingStockComp.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();

まず、次のようにブロックします。

gvReportingStockComp.RenderControl(hw);

そしてビジュアルスタジオは言う:「GridViewはrunat = serverで宣言する必要があります」

または、次のようにブロックします。

pdfDoc.Close();

そして彼は言う:pdfDocは空です...

誰かがアイデアを持っていますか?

4

2 に答える 2

1

以下のコードを追加して、runat="server" エラーを回避します。

public override void VerifyRenderingInServerForm(Control control)
{
    /* Verifies that the control is rendered */
}

ページングを無効にして、Gridview のすべての行を PDF にエクスポートすることができます。

以下のコードを gridview の rendercontrol メソッドの前に追加します。

 gvReportingStockComp.AllowPaging = false;
 gvReportingStockComp.DataBind();

疑問がある場合は、以下の記事を参照してください。

http://www.aspsnippets.com/Articles/Export-GridView-To-Word-Excel-PDF-CSV-Formats-in-ASP.Net.aspx

于 2013-06-20T08:06:07.890 に答える
0

Rendering関数を PDF コードの後に​​追加します

public override void VerifyRenderingInServerForm(Control control)
    {
        // verifies the control is rendered here
    }
于 2013-06-20T08:02:57.403 に答える