Bonjour à tous,

j'essaie d'exporter une gridview dans un document pdf avec le package iTextSharp que j'ai choper avec NuGet.

Mon problème n'a pas l'air de venir de ça mais je ne vois pas trop comment le régler. Je déclare une gridview dans mon fichier .aspx de la façon suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
<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>
Et dans mon code behind c# je remplis cette gridview :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
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();
Le gridview se remplit bien mais si je continu mon code avec ceci pour le transférer dans un PDF :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
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();
Soit le code bloque à la ligne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
gvReportingStockComp.RenderControl(hw);
en disant "Le gridview doit être déclaré dans une balise "form" avec l'attribut "runat=server" "

Soit il bloque à l'instruction :

en me disant que le fichier pdfDoc est vide...

Quelqu'un a une idée SVP ? Merci d'avance