2011-07-21 69 views
0

在我的應用程序中,我有幾個按鈕的updatepanel。其中一個按鈕是「導出」按鈕 - 點擊後,用戶可以將報告下載到他的本地計算機。下載後updatePanel中的按鈕不起作用

按鈕以這種方式創建:

btnSave = new Button 
{ ID = "btnSave", CausesValidation = false, Text = "Save", CommandName = CommandNames.SaveToCSV }; 
Controls.Add(btnSave); 
ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnSave); 

,然後單擊它後執行該代碼:

string csv = GenerateReport(); 
Page.Response.Clear(); 
Page.Response.Buffer = true; 
Page.Response.ContentType = "text/csv"; 
Page.Response.AppendHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); 
Page.Response.Write(csv); 
Page.Response.End(); 

下載作品corectly即使是在更新面板。我的問題是,第一次點擊導出按鈕後,所有按鈕停止工作 - 我有頁面,不會發送任何東西到服務器 - 檢查Fiddler(但客戶端javascrpts工作正常)。 有誰知道如何解決這個問題?也許有另一種方式從updatepanel下載數據(我無法從更新面板中刪除此按鈕)。

+0

你嘗試我的回答(在小提琴手響應內容,你的異步按鈕後點擊什麼)?我很想知道問題所在...... –

回答

1

我不知道爲什麼會這樣,但一個快速的解決方法可能是更改下載按鈕,一個簡單的HREF與目標= _blank和CSV生成代碼移到一個專門的頁面\ HTTP處理程序

+0

良好的解決方法,謝謝。 –

0

UpdatePanel在異步回發之後需要一個有效的增量,但是您要發送一個CSV文件。我的猜測是,一個異常被無聲地拋出,但由於部分回發,你沒有看到黃色的屏幕。 Fiddler會顯示一個看起來像黃色屏幕的響應(查看Fiddler中的響應內容)?

(user4537的解決方法會起作用,因爲它避免了我上面描述的問題。)