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

イェナー、オード、ブラクシュマの助けを借りて、

コードを次のように変更しました。

    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

最初のパラメーターとしてResponse.OutputStreamを渡して、DataSet.WriteXmlメソッド(Stream、XmlWriteMode)を呼び出すことができます。その前にResponse.Clear()を呼び出す必要があるかもしれません。

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