2012-10-18 222 views
1

我有以下代碼:保存文件保存對話框

public static string ExportToXML(DataSet dts, string Filename) 
    { 
     string returnmsg = ""; 

     try 
     { 

      dts.WriteXml(Filename, System.Data.XmlWriteMode.IgnoreSchema); 
     } 
     catch (Exception err) 
     { 
      returnmsg = returnmsg + err.ToString(); 
     } 


     return returnmsg; 
    } 

,這將有助於我對我的數據集轉換成XML文件。我創建我的web應用程序調用上述功能的按鈕,並期待着以下畫面:(當然,名稱不會Default.aspx的,但文件名)

enter image description here

我在代碼中遺漏了什麼,導致上面的對話框沒有出現,當我點擊按鈕?

回答

0

與Yener,俄德和Blachshma的幫助下,

我已經修改我的代碼如下:

try{ 
      HttpContext context = HttpContext.Current; 
      context.Response.Clear(); 

      //dts.WriteXml(Filename, System.Data.XmlWriteMode.IgnoreSchema); 
      context.Response.Write("<?xml version=\"1.0\" standalone=\"yes\"?>"); 
      dts.WriteXml(context.Response.OutputStream, System.Data.XmlWriteMode.IgnoreSchema); 
      context.Response.ContentType = "text/xml"; 
      context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + Filename + ".xml"); 

      context.Response.End(); 

    } 
0

您將第一個參數傳遞給WriteXml,字符串Filename是將在服務器上保存的文件的名稱。

您需要使用HttpResponse對象 - WriteFile方法將採用文件的路徑 - 這可以與您在示例代碼中編寫的文件相同。

所以,在某處背後的代碼,你應該有類似以下內容:

ExportToXML(myDataSet, theFileName); 

Response.WriteFile(theFileName); 
+0

我收集你的想法,並拿出一個答案,想聽取您的意見 – Jack

0

你應該將文件transmit到客戶端。

基本上要

  1. 保存在服務器上的XML文件。使用上述方法

有關詳細信息

  • 它發送到客戶端了解Response.TransmitFile

  • +0

    我收集你的想法,並已出來一個答案,並希望聽到您的意見。 – Jack

    +0

    你試過了嗎?它做你想要的嗎? – Blachshma