Ich verwende einen UpdatePanel
mit einem Gridview darin. Ein Timer überprüft einige Dinge in der Gridview. Im Gridview erzeugen ich eine Spalte für die Anzeige einen Upload:Fehler in UpdatePanel: Ausdruck kann nicht ausgewertet werden, da der Code optimiert ist oder ein nativer Rahmen über dem Aufrufstapel liegt
<asp:TemplateField HeaderText="Zeichnung" ItemStyle-HorizontalAlign="Center">
-Code hinter:
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);
Durch Klicken auf die Taste, um den Download zu starten:
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();
Alle gearbeitete Gut, bis ich die Gridview in das UpdatePanel gelegt habe. Nun wirft sie den Fehler:
Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
Ich versuchte, die Response.End()
mit HttpContext.Current.ApplicationInstance.CompleteRequest();
aber nichts geändert zu ersetzen.
Wie hier geschrieben (question) ist es ein Problem des Postbacks. Die Lösung scheint zu sein
protected void Page_Load(object sender, EventArgs e) {
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.btnExcelExport);
//Further code goes here....
}
Aber ich kann diesen Code nicht hinzufügen, weil die Schaltfläche generiert und nicht in der Gridview angegeben ist. Ich habe versucht, scriptManager.RegisterPostBackControl(this.btn_Upload);
hinzuzufügen, aber er findet den Knopf nicht.
Wie kann ich das lösen? Danke
Funktioniert, danke! –