0

このASP.NetWebアプリケーションがあり、JQuery JQGridを使用しているページの1つで、JQGridをExcelシートにエクスポートできるようにしたいので、JavaScriptを使用して配列に値を収集し、Webサービスを呼び出してDataGridに値を入力すると、WebServiceでのエクスポートを除いて、すべてが正常に実行されました。ファイルのダウンロードは表示されません。これが私のWebServiceコードです。

[WebMethod]
public void GetData(object[] Values)
{
    DT_ToFill.Columns.Add("CaseID");
    DT_ToFill.Columns.Add("SR");

    foreach (object Value in Values)
    {
        Dictionary<string, object> DictVals = new Dictionary<string, object>();
        DictVals = (Dictionary<string, object>)Value;
        string CaseID = DictVals["CaseID"].ToString();
        string SR = DictVals["SR"].ToString();

        object[] Obj = new object[2] { CaseID, SR };
        DT_ToFill.Rows.Add(Obj);
    }
    ExportToExcel(DT_ToFill, Context.Response);
}

[WebMethod]
public string HelloWorld()
{
    return "Hello World";
}

public void ExportToExcel(DataTable dt, HttpResponse Response)
{
    GridView GridView1 = new GridView();
    GridView1.DataSource = dt;
    Response.Buffer = true;
    Response.AddHeader("Content-Disposition", "inline;filename=Schedule_ExcelSheet.xls");
    Response.Charset = "";
    Response.ContentType = "application/ms-excel";
    Response.Charset = "UTF-8";
    Response.ContentEncoding = Encoding.UTF8;
    StringWriter sw = new StringWriter();
    HtmlTextWriter ht = new HtmlTextWriter(sw);
    GridView1.AllowPaging = false;
    GridView1.DataBind();
    GridView1.RenderControl(ht);
    Response.Output.Write(sw.ToString());
    Response.Flush();
    Response.End();
}

public void VerifyRenderingInServerForm(Control control)
{
}

助けてください...ありがとう

4

1 に答える 1

0

ajaxリクエストへの応答としてExcelファイルを送り返しているように聞こえますか?もしそうなら、ajaxを介してファイルのダウンロードを機能させることはできないと思います。

今行っているようにajax経由でデータを送信するかもしれませんが、新しいウィンドウまたはiframe(document.bodyに追加)を実行し、srcをExcelファイルを返すURLに設定します。これにより、ファイルのダウンロードがトリガーされます。これは私が通常行うことです。

于 2012-08-11T18:57:48.227 に答える