Sys.WebForms.PageRequestManagerParserErrorException错误

错误消息:

Sys.WebForms.PageRequestManagerParserErrorException: 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。

发生状况:

页面使用了ajax的UpdatePanels,在使用excel导出时,使用了Response.WriteFile这样的方法,所以出现上述错误。

解决办法:

1、将使用了Response.Write的控件放到啊UpdatePanels外面,或者将UpdatePanels删除。当然大多数情况下,我们是不可以删除UpdatePanels的。

2、如果控件的名称是唯一的,可以使用在UpdatePanels里增加PostBackTrigger ,并制定controlid为你的控件:

  <Triggers><asp:PostBackTrigger ControlID="btnExport" /></Triggers>

3、如果你的控件是动态的,比如在gridview每行中都有的按钮,可以使用ScriptManager.RegisterPostBackControl()来注册你的控件

protected void gvGirdView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            //不为表头
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //含有ajax的updatepanel的页面必须将想要使用Response.Write的控件注册PostBackControl
                //本业务使用了excel导出,所以必须绑定

               //我的业务用到了模板页,ScriptManager 定义在模板页上,所以使用this.Parent.Parent到上级去找ScriptManager

               //实际可根据自己程序情况查找
                ScriptManager smManage = (ScriptManager)this.Parent.Parent.FindControl("smManage ");
                if (e.Row.FindControl("btExport") != null)
                {
                    smManage .RegisterPostBackControl(e.Row.FindControl("btExport"));
                }
            }
        }

上面为转载

以下为自己使用经历:

由于这样是动态注册了回传控件,在回传后,应该需要再重新绑定一次gridview控件,否则之前动态注册的代码将会因为这次回传而失效,切记

 

(4)如果控件是动态的,需要点击后在后台弹出对话框,则,可以使用以下方式

ScriptManager.RegisterStartupScript(this, GetType(), "执行结果", "<script>alert('提交成功');</script>", false);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值