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,而是文件名。)

当我单击按钮时,我的代码中是否遗漏了导致上述对话框不出现的任何内容?

4

4 回答 4

0

您传递给的第一个参数WriteXml,字符串Filename是将保存在服务器上的文件的名称。

您需要使用该HttpResponse对象 - 该WriteFile方法将采用文件的路径 - 这可以与您在示例代码中编写的文件相同。

所以,在你的代码后面的某个地方,你应该有如下内容:

ExportToXML(myDataSet, theFileName);

Response.WriteFile(theFileName);
于 2012-10-18T09:11:09.747 回答
0

您应该将文件传输给客户端。

基本上你想

  1. 将 XML 文件保存在您的服务器上。

  2. 使用上述方法将其传输给客户端

有关更多信息,请阅读Response.TransmitFile

于 2012-10-18T09:12:03.290 回答
0

在 Yener、Oded 和 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();

    }
于 2012-10-18T09:53:09.463 回答
0

您可以调用DataSet.WriteXml 方法 (Stream, XmlWriteMode)传递Response.OutputStream作为第一个参数。您可能必须在此之前调用Response.Clear()

dts.WriteXml(Response.OutputStream, System.Data.XmlWriteMode.IgnoreSchema); 
于 2012-10-18T09:17:49.917 回答