2013-02-18 57 views
6

我有這樣的代碼時會生成錯誤我可以看到正確的信息。但除上述錯誤外,不會出現保存/打開對話框。到Response.End()出口GridView控件excel文件

我正在使用UpdatePanels。

+0

你使用的是updatepanels還是asp.net ajax?試試這個 http://stackoverflow.com/questions/11221033/sys-webforms-pagerequestmanagerparsererrorexception-the-message-received-from-t – feco 2013-02-18 17:39:30

回答

24

添加到您的Page_Load()方法

假設ibtGenerateReport是你的按鈕

protected void Page_Load(object sender, EventArgs e) { 
    ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page); 
    scriptManager.RegisterPostBackControl(this.ibtGenerateReport); 
    //Further code goes here.... 
} 

說明:

UpdatePanel控件使用異步回發到控制的哪些部分頁面呈現。它使用客戶端上的一大堆JavaScript以及服務器上的一大堆C#來完成此操作。這是使用客戶端上的JavaScript可以理解的特殊格式呈現的。如果通過在頁面的渲染階段之外渲染東西來混淆格式,則格式將會混亂。

爲什麼我不斷收到PageRequestManagerParserErrorException?

好吧,你可能正在做錯誤信息中提到的事情之一。以下是最常見的原因,爲什麼他們不工作:

呼叫至的Response.Write(): 通過調用的Response.Write()直接您繞過ASP.NET控件的正常渲染機制。您編寫的數據將直接發送到客戶端,無需進一步處理。

響應濾波器/的HttpModules: 到的Response.Write()類似,他們可以改變的渲染,這種方式在UpdatePanel不會知道。

服務器啓用跟蹤: 跟蹤有效地寫出使用的Response.Write(),因此打亂了我們使用的UpdatePanel的特殊格式。

調用Server.Transfer(): 不幸的是,沒有辦法檢測到Server.Transfer()被調用。這意味着當有人調用Server.Transfer()時,UpdatePanel不能做任何智能的事情。發送回客戶端的響應是您傳輸到的頁面上的HTML標記。由於它的HTML而不是特殊的格式,它不能被解析,並且你會得到錯誤。

解決方法:避免解析錯誤 一種方法是做一個常規的回發,而不是異步回發的調用ScriptManager.RegisterPostBackControl()

請參閱完整的解釋,並從其他解決方案Ellon立頓的博客 here

+0

嘗試導出您的GridView使用本教程http://ramanisandeep.net/2009/04/07/export-gridview-to-excel/ – feco 2013-02-18 17:52:55

0

在響應寫入任何內容之前,您是否嘗試過Response.Clear(),然後在結束響應之前使用Response.Flush()?

此外,它在Response.End()中傳遞值true並不會傷害,以避免重定向時發生HTTP異常錯誤。只要確保其餘的代碼隱藏沒有做你不想要的額外處理。

+0

我沒有注意到他在用更新面板 - 清除()ISN在這種情況下不需要。 – Ripside 2013-02-18 17:46:57

4

到Response.End更改此:

Response.Flush(); 
HttpContext.Current.ApplicationInstance.CompleteRequest(); 

是到Response.End一種不好的做法,它將中止線程繞過運營的其餘部分在HTTP請求生命週期,它拋出一個異常。

0

既然你是想通過的UpdatePanel做到這一點,你應該嘗試使用jQuery Ajax和在一個單獨的頁面在頁面加載事件編寫代碼在調用熱曲來獲取文件est到此頁面。新的響應實際上是移除了需要解析的信息,作爲對以前更新面板請求的響應。

0

此代碼與您的aspx中的某些UpdatePanel/AJAX相沖突。

嘗試在你的aspx寫這篇:

Code - 這應該工作! :')

+0

複製代碼作爲**文本**在答案,請。 – Kiquenet 2016-10-04 12:48:25