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"));
                }
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章