1

いくつかのバックボーン コレクションにあるデータを csv ファイルにエクスポートしようとしています。

これまでのところ、Javaスクリプトを使用して新しいエクスポートページを開いています

                var href = [];    
                href.push('ExportAnalysis.aspx?');
                href.push('ParamSet=' + this.document.analysisParameterSetView.selectedParamSet + '&');
                href.push('Start=' + start

Date + '&');
            href.push('Finish=' + endDate + '&');
            frames["exportIFrame"].location.href = href.join('');

次に、exportAalysis.aspx のコード ビハインドで、データを取得するクエリ文字列から変数を取得し、csv ファイルを作成して、そのようにファイルを返します。

  // Get the export parmaters from the query string
        var paramSet = Request["ParamSet"];
        var startUnix = int.Parse(Request["Start"]);
        var finishUnix = int.Parse(Request["Finish"]);
        var start = DateTime.Parse("1970-01-01").AddSeconds(startUnix);
        var finish = DateTime.Parse("1970-01-01").AddSeconds(finishUnix);

        // GET DATA using Parameters

        var filename = "analysisExport";
        var content = "1,2";

        Response.Clear();
        Response.ContentType = "application/x-unknown";
        Response.AddHeader("Content-Disposition", "attachment;filename=" + filename);
        Response.Write(content);

        Response.End();
    }

これは問題なく動作しますが、必要なデータを 2 回取得する必要があるため、少し効率が悪いようです。1 回はメイン ページ用、もう 1 回はエクスポート ページ用です。

少し長いショットですが、エクスポート ページのコード ビハインドから最初のページのデータを取得することは可能ですか? すべてがクライアント側である場合、window.opener.document を使用してオープナー ページを取得できます。asp.net で同様のことを行うことはできますか

それとも、私は完全に軌道から外れていますか?これを達成するためのはるかに良い方法があります.

4

1 に答える 1

1

これは、iframe とメイン ウィンドウの間でプロトコルとドメインが一致する場合にのみ機能します。すべてのコードは JavaScript です

親への iframe:

var pDoc = window.parent.document;
var pWin = window.parent.window;

iframe へのドキュメント:

var cDoc = document.getElementById("exportIFrame").contentDocument;
var cWin = document.getElementById("exportIFrame").contentWindow;

親でスクリプトを呼び出すには:

pWin.yourFunction("parameter");

iframe でスクリプトを呼び出すには:

cWin.yourFunction("parameter");
于 2013-05-21T00:25:35.847 に答える