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
Fonctionne, merci! –