0

我有这个 ASP.Net Web 应用程序,在我的一个页面中我使用 JQuery JQGrid,我希望能够将 JQGrid 导出到 Excel 表,所以使用 JavaScript 我收集了数组中的值,然后调用了一个 WebService在 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

听起来您正在将 excel 文件作为对 ajax 请求的响应发送回来?如果是这样,我认为您不能通过 ajax 进行文件下载。

也许像您现在正在做的那样通过 ajax 发送数据,但是然后执行新窗口或 iframe(将其附加到 document.body)并将 src 设置为返回 excel 文件的 url。那应该触发文件下载。这是我通常做的。

于 2012-08-11T18:57:48.227 回答