2011-04-11 82 views
2

我的問題如下所示。 我有一個網格與文件(Id's)。現在,當有人點擊某一行時,我想讓他下載或顯示該文檔。但爲了讓它更加安全,讓我們假設我會在點擊按鈕時做到這一點。我嘗試了兩種方法,但他們都沒有從事我的工作。在瀏覽器中顯示Response.Binarywrite保存對話框或打開新窗口並保存後關閉

  1. 我試圖response.binarywrite按鈕點擊:

     Response.Clear(); 
         Response.ClearHeaders(); 
         Response.ClearContent(); 
         Response.ContentType = "application/postscript mime"; 
         Response.AddHeader("content-disposition", "attachment; filename=test.ps"); 
         Response.AddHeader("content-length", _excuteGetDocumentResult.Length.ToString()); 
         Response.ContentEncoding = new System.Text.UTF8Encoding(); 
         Response.BinaryWrite(_excuteGetDocumentResult); 
    

但沒有任何反應,當我嘗試修改這個代碼,我通常會得到一些JavaScript錯誤說sommething有關更改響應...

socond方法是打開新窗口,並在頁面加載上面的代碼。

<asp:Button Text="ShowResult" OnClientClick="radopen('ShowResult.aspx','ShowDocumentDialog'); return false;" 
     runat="server" /> 

socond方法可行,但保存或取消資源管理器保存文件對話框窗口後,我的打開的窗口仍然存在。我試圖添加一些JavaScript來關閉它,但它只適用於沒有response.binarywrite在加載頁面上...

任何想法如何可以達到我想要的?

回答

0

在方法1

嘗試Response.End();Response.BinaryWrite(_excuteGetDocumentResult);

+0

我得到JS錯誤 Sys.WebForms.PageRequestManagerParserErrorException:從服務器收到的消息無法解析。此錯誤的常見原因是,通過調用Response.Write(),響應篩選器,HttpModules或服務器跟蹤已啓用來修改響應時。 詳細信息:錯誤解析'II *'附近。 – shin 2011-04-11 12:21:14

+1

這個網格在更新面板裏面嗎?如果是的話,首先嚐試刪除更新面板,你不能在更新面板(Ajax)內做這樣的事情 – 2011-04-11 12:35:35

+0

這是一個Telerik radgrid,但使它更簡單我在按鈕單擊事件中做它,但它仍然失敗:/這就是爲什麼我想打開一些額外的窗口只有這個響應,但客戶端將不得不手動關閉它... – shin 2011-04-11 12:46:41

相關問題