gabiset
Messages postés53Date d'inscriptionmercredi 14 septembre 2005StatutMembreDernière intervention 9 novembre 2007
-
23 oct. 2007 à 16:50
gabiset
Messages postés53Date d'inscriptionmercredi 14 septembre 2005StatutMembreDernière intervention 9 novembre 2007
-
9 nov. 2007 à 14:32
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("
")
' 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 ?
gabiset
Messages postés53Date d'inscriptionmercredi 14 septembre 2005StatutMembreDernière intervention 9 novembre 20071 25 oct. 2007 à 10:03
Bonjour à tous,
Je crois que je vous ai un peu effrayés avec mon post très long ;-)
Il faut finalement retenir que l'erreur que je rencontre quand je fais un Gridview.RenderControl() est la suivnate :
"RegisterForEventValidation can only be called during Render();"
Quelqu'un sait-il comment résoudre cette erreur ? Je ne comprends pas ce qu'elle signifie...
cioranEmil
Messages postés1Date d'inscriptionjeudi 8 février 2007StatutMembreDernière intervention 9 novembre 2007 9 nov. 2007 à 13:56
Salut Delphine,
Ajoute ce code:
EnableEventValidation="false" dans l'entête de ta page aspx, par là :
(<%@ Page Language="VB" MasterPageFile="~/Blabla.master"
AutoEventWireup="false" CodeFile="Blabla.aspx.vb" EnableEventValidation="false"
Inherits="Blabla" title="BLABLA" StylesheetTheme="ControlsTheme" %>)
Ensuite, dans le Page_Init ou Page_Load, enregistre ton bouton qui appele la fonction d'export auprès de ton ScriptManager :