我有以下代码:
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,而是文件名。)
我在代码中遗漏了什么导致当我点击按钮时没有出现上面的对话框?
答案 0 :(得分:0)
您传递给WriteXml
的第一个参数,字符串Filename
是将在服务器上保存的文件的名称。
您需要使用HttpResponse
对象 - WriteFile
方法将采用文件的路径 - 这可能与您在示例代码中编写的文件相同。
因此,在您的代码中的某处,您应该具有以下内容:
ExportToXML(myDataSet, theFileName);
Response.WriteFile(theFileName);
答案 1 :(得分:0)
答案 2 :(得分:0)
您可以调用DataSet.WriteXml Method (Stream, XmlWriteMode)作为第一个参数传递Response.OutputStream。您可能需要在此之前致电Response.Clear()。
dts.WriteXml(Response.OutputStream, System.Data.XmlWriteMode.IgnoreSchema);
答案 3 :(得分: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();
}