[C#] Comment exporter un GridView vers Excel ?
Salut,
je vous propose un tout nouveau jeu : chercher l'erreur :arf:
tout d abord mon code de mo fichier aspx.cs
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
protected void Imprime_Click(object sender, EventArgs e)
{
verifColonne(GridView1);
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.Charset = "";
StringWriter monstringwriter = new StringWriter();
HtmlTextWriter monhtmltextwriter = new HtmlTextWriter(monstringwriter);
GridView1.RenderControl(monhtmltextwriter);
Response.Write(monstringwriter.ToString());
Response.End();
GridView1.Dispose();
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
Response.Redirect("./FicheAnomalieLecture.aspx?idfa=" + this.GridView1.SelectedRow.Cells[1].Text);
}
private void verifColonne(Control monDataGrid)
{
int nbControls = monDataGrid.Controls.Count - 1;
while (nbControls >= 0)
{
verifColonne(monDataGrid.Controls[nbControls]);
nbControls = nbControls - 1;
}
if (!((monDataGrid is TableCell)))
{
if (!((monDataGrid.GetType().GetProperty("SelectedItem") == null)))
{
LiteralControl controleLitteral1 = new LiteralControl();
monDataGrid.Parent.Controls.Add(controleLitteral1);
try
{
controleLitteral1.Text = ((string)(monDataGrid.GetType().GetProperty("SelectedItem").GetValue(monDataGrid, null)));
}
catch (Exception monException)
{
Response.Write(monException.Message);
}
monDataGrid.Parent.Controls.Remove(monDataGrid);
}
else
{
if (!((monDataGrid.GetType().GetProperty("Text") == null)))
{
LiteralControl controleLitteral2 = new LiteralControl();
monDataGrid.Parent.Controls.Add(controleLitteral2);
controleLitteral2.Text = ((string)(monDataGrid.GetType().GetProperty("Text").GetValue(monDataGrid, null)));
monDataGrid.Parent.Controls.Remove(monDataGrid);
}
}
}
}
} |
puis celui de mon fichier aspx
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ListeFA.aspx.cs" Inherits="GestionFA_ListeFA" MasterPageFile="~/MasterPageNavigation.master" Title="Liste des fiches d'anomalie " %>
<%@ Register Src="../ControlesAccesPages/ControleAccesRoleVisionneur.ascx" TagName="ControleAccesRoleVisionneur"
TagPrefix="uc1" %>
<asp:Content ID="content4" ContentPlaceHolderID="ContentPlaceHolder2" runat="server">
<uc1:ControleAccesRoleVisionneur ID="ControleAccesRoleVisionneur1" runat="server" />
<asp:Label ID="Label2" runat="server" Text="Liste des fiches d'anomalie :" Font-Underline="true" CssClass="titrePage"></asp:Label>
<br />
<asp:ImageButton ID="imprime" runat="server" OnClick="Imprime_Click" ImageUrl="~/images/imprim2.jpeg"/>
<br />
<div class="interfUtilisateurDecalageDroiteImportant">
<asp:GridView ID="GridView1" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None" AutoGenerateColumns="False" DataSourceID="listeFA" OnSelectedIndexChanged="GridView1_SelectedIndexChanged" Width="600px" AllowPaging="True" AllowSorting="True">
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<EditRowStyle BackColor="#999999" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333"/>
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ButtonType="Image" SelectImageUrl="~/images/collapse.png" SelectText=""
ShowSelectButton="True" />
<asp:BoundField DataField="__idDocument" HeaderText="Ref" SortExpression="Document.idDocument" />
<asp:BoundField DataField="__nomDoc" HeaderText="Titre" SortExpression="nomDoc" />
<asp:BoundField DataField="__statut" HeaderText="Statut" SortExpression="idStatut" />
<asp:BoundField DataField="__gravite" HeaderText="Gravité" SortExpression="idGravite" />
<asp:BoundField DataField="__ProduitConcerne" HeaderText="Produit" SortExpression="idProduit" />
<asp:BoundField DataField="__moduleImpacte" HeaderText="Modules" SortExpression="impactesur.idmodule"/>
<asp:BoundField DataField="__dateCreation" HeaderText="Date Création" SortExpression="dateCreation" />
<asp:BoundField DataField="__dateModification" HeaderText="Date Modification" SortExpression="dateDerniereModif" />
<asp:BoundField DataField="__auteur" HeaderText="Auteur" SortExpression="redige.idpersonne"/>
</Columns>
<EmptyDataTemplate>
Aucune fiche d'anomalie actuellement.
</EmptyDataTemplate>
</asp:GridView>
<br />
<asp:ObjectDataSource ID="listeFA" SelectMethod="lesFichesAnomalies" runat="server" TypeName="Metiers.SystemeGestionDoc" OldValuesParameterFormatString="original_{0}" SortParameterName="SortExpression">
</asp:ObjectDataSource>
</asp:Content> |
le problème vient lors du clic sur mon bouton pour imprimer (qui en fait exporte vers Excel)
[FONT=Arial, Helvetica, Geneva, SunSans-Regular, sans-serif]Sur cette ligne
GridView1.RenderControl(monhtmltextwriter);
erreur :
Le contrôle 'ctl00_ctl00_ContentPlaceHolder1_ContentPlaceHolder2_GridView1' de type 'GridView' doit être placé dans une balise form avec runat=server.
:merci:
[/FONT]