UpdatePanel 中的错误:无法评估表达式,因为代码已优化或本机框架位于调用堆栈的顶部
Error in UpdatePanel: Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
我使用的是 UpdatePanel
,里面有一个 Gridview。计时器正在检查 Gridview 中的某些内容。在 Gridview 中,我生成了一个用于查看上传的列:
<asp:TemplateField HeaderText="Zeichnung" ItemStyle-HorizontalAlign="Center">
后面的代码:
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);
点击按钮开始下载:
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();
在我将 gridview 放入 UpdatePanel 之前一切正常。现在它抛出错误:
Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
我尝试用 HttpContext.Current.ApplicationInstance.CompleteRequest();
替换 Response.End()
但没有任何改变。
如这里所写 (question) 这是回发的问题。解决方案似乎是
protected void Page_Load(object sender, EventArgs e) {
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.btnExcelExport);
//Further code goes here....
}
但是我无法添加这段代码,因为按钮是生成的,但没有在 gridview 中给出。我试图添加 scriptManager.RegisterPostBackControl(this.btn_Upload);
但他没有找到按钮。
我该如何解决这个问题?谢谢
一个可能的解决方案是将 gridview(作为一个整体)注册为回发控件。ScriptManager.RegisterPostBackControl(this.gvr);
我使用的是 UpdatePanel
,里面有一个 Gridview。计时器正在检查 Gridview 中的某些内容。在 Gridview 中,我生成了一个用于查看上传的列:
<asp:TemplateField HeaderText="Zeichnung" ItemStyle-HorizontalAlign="Center">
后面的代码:
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);
点击按钮开始下载:
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();
在我将 gridview 放入 UpdatePanel 之前一切正常。现在它抛出错误:
Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack
我尝试用 HttpContext.Current.ApplicationInstance.CompleteRequest();
替换 Response.End()
但没有任何改变。
如这里所写 (question) 这是回发的问题。解决方案似乎是
protected void Page_Load(object sender, EventArgs e) {
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.btnExcelExport);
//Further code goes here....
}
但是我无法添加这段代码,因为按钮是生成的,但没有在 gridview 中给出。我试图添加 scriptManager.RegisterPostBackControl(this.btn_Upload);
但他没有找到按钮。
我该如何解决这个问题?谢谢
一个可能的解决方案是将 gridview(作为一个整体)注册为回发控件。ScriptManager.RegisterPostBackControl(this.gvr);