Esportare in excel il contenuto di una gridview, è semplice, ma può dare qualche problemino se siamo in presenza di updatePanel. Il codice che posto, mi è stato molto utile per un progetto, nel quale dovevo esportare i dati contenuti in una gridView a sua volta contenuta in un updatePanel.
Per far funzionare il tutto è sufficiente aggiungere, all’interno dello stesso updatePanel che contiene la gridview, un pulsante, per il quale gestiremo l’evento click.
Il codice da inserire nell’evento click del nostro pulsante è il seguente:
…
Response.Clear();
Response.AddHeader(”content-disposition”, “attachment;filename=FileName.xls”);
Response.Charset = “”;
Response.ContentType = “application/vnd.ms-excel”;
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
gv.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
…
A questo punto per far si che tutto funzioni come desideriamo dobbiamo fare ancora due piccoli passi:
1. Dire al nostro updatePanel di gestire correttamente l’evento del nostro pulsante:
...
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="btnExport" />
</Triggers>
</asp:UpdatePanel>
...
2. Eseguire l’override del metodo VerifyRenderingInServerForm(Control control):
public override void VerifyRenderingInServerForm(Control control)
{
// Confirms that an HtmlForm control is rendered for the
//specified ASP.NET server control at run time.
}
Posto questo articolo principalmente per due ragioni: la prima è che quando mi sarò scordato questo trucchetto almeno potrò leggerlo sulle mie pagine; la seconda ma non meno importante è che spero che sia utile a qualcuno di voi che mi legge
Ciao Ragazzi…
stay tuned