Bonjour,
J'ai un gridview que je souhaite exporter sous Excel. Mon code fonctionnait très bien jusqu'à ce que j'ajoute un UpdatePanel autour de mon gridview. Il y a apparemment un problème de compatibilité...
Voici le code de mon export Excel :
Protected Sub ExportExcel(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs)
Try
' On efface les éventuelles données déjà dans la mémoire tampon
Response.Clear()
' On place tout ce qui est destiné au client dans la mémoire tampon
Response.Buffer = True
' On conserve les accents
Response.ContentEncoding = System.Text.Encoding.UTF7
' On définit le type d'informations renvoyée, ici des données au format Excel
Response.ContentType = "application/vnd.ms-excel"
' On efface le jeu de caractères actuellement défini
Response.Charset = ""
EnableViewState = False
' On instancie deux objets qui vont nous permettre de récupérer les données du DataGrid :
' le StringWriter et l'HtmlTextWriter
Dim monStringWriter As StringWriter = New StringWriter
Dim monHtmlTextWriter As HtmlTextWriter = New HtmlTextWriter(monStringWriter)
' On récupère le titre du tableau
monStringWriter.Write(LabelTitre.Text.ToString())
monStringWriter.Write(" <br /><br /> ")
' On extrait le contenu du GridView dans l'HtmlTextWriter
GridViewResult.RenderControl(monHtmlTextWriter)
' On copie le contenu extrait dans la mémoire tampon
Response.Write(monStringWriter.ToString())
' On ferme "le flux" de données et envoie les données au client
Response.End()
Catch ex As Exception
End Try
End Sub
En fait, j'ai aussi dans mon code :
Public Overrides Sub VerifyRenderingInServerForm(ByVal control As Control)
' Needed for Export Excel on GridViewResult.RenderControl(monHtmlTextWriter)
' Confirms that an HtmlForm control is rendered for the specified ASP.NET server control at run time
End Sub
J'ai trouvé cette solution sur les forums sinon j'avais le message d'erreur suivant :
"Control 'GridViewResult' of type 'GridView' must be placed inside a form tag with runat=server."
alors qu'il est bien dans un tag avec runat="server"...
Voici le message d'erreur que j'obtiens lorsque je clique pour obtenir mon export :
Sys.WebForms.PageRequestManagerParserErrorException : The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled.
Details : Error parsing near '2253+AHw-updatePanel'.
et en debug, ça plante sur la ligne GridViewResult.RenderControl(monHtmlTextWriter)
et j'obtiens le message :
"RegisterForEventValidation can only be called during Render();"
Quelqu'un saurait-il comment résoudre ce problème ?
Merci pour votre aide.
Delphine