2017-01-18 1 views
0

J'utilise un UpdatePanel avec un Gridview. Un minuteur vérifie certaines choses dans Gridview. Dans le Gridview je produis une colonne pour afficher un téléchargement:Erreur dans UpdatePanel: Impossible d'évaluer l'expression car le code est optimisé ou un cadre natif est au-dessus de la pile d'appels

<asp:TemplateField HeaderText="Zeichnung" ItemStyle-HorizontalAlign="Center"> 

code derrière:

ImageButton ibtn = new ImageButton(); 
ibtn.CommandArgument = Upload; 
ibtn.Click += btn_clicked; 
ibtn.ImageUrl = "~/images/download.png"; 
ibtn.ToolTip = "Zeichnung öffnen"; 
gvr.Cells[20].Controls.Add(ibtn); 

En cliquant sur le bouton Démarrer le téléchargement:

Response.ClearHeaders(); 
Response.ContentType = "application/pdf"; 
Response.Clear(); 
Response.AppendHeader("Content-Disposition", "attachment;Filename=" + Upload); 
Response.TransmitFile(Page.MapPath("App_data/OPL/Upload/" + Upload)); 
Response.End(); 

tous travaillé bien jusqu'à ce que je mets la gridview dans le UpdatePanel. Maintenant, il jette l'erreur:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

J'ai essayé de remplacer le Response.End() avec HttpContext.Current.ApplicationInstance.CompleteRequest(); mais rien n'a changé.

Comme écrit ici (question) c'est un problème de la publication. La solution semble être

protected void Page_Load(object sender, EventArgs e) { 
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
scriptManager.RegisterPostBackControl(this.btnExcelExport); 
//Further code goes here.... 
} 

Mais je ne peux pas ajouter ce code parce que le bouton est généré et non donné dans le gridview. J'ai essayé d'ajouter scriptManager.RegisterPostBackControl(this.btn_Upload); mais il ne trouve pas le bouton.

Comment puis-je résoudre ce problème? Merci

Répondre

1

Une solution possible est d'enregistrer le gridview (dans son ensemble) en tant que contrôle de publication. ScriptManager.RegisterPostBackControl(this.gvr);

+0

Fonctionne, merci! –