我的 jqGrid 中添加了“导出到 Excel”按钮。它工作正常,直到我将 jqGrid 链接到具有 20,000 条记录的大型 GridView,每条记录有 200 个字段(列)
我在 DataBind() 调用中收到 {"Exception of type 'System.OutOfMemoryException' was throw."}:
public void ExportToExcel()
{
if (Session["query"] == null || Session["fieldNameAsDef"] == null)
{
return;
}
var grid = new GridView();
List<string> fieldNameAsDef = (List<string>)Session["fieldNameAsDef"];
grid.DataSource = ((IQueryable)Session["query"]).Select("new (" + string.Join(",", fieldNameAsDef.ToArray()) + ")");
grid.DataBind();
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment; filename=EDGE_ExcelFile.xls");
Response.ContentType = "application/excel";
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
这是 System.Web.UI.WebControls.GridView 的限制吗?或者是 IIS 6 和 MVC2 问题。
jqGrid 及其作为 DataSource 的 GridView 是旧 MVC 2 应用程序的一部分,该应用程序在具有 IIS 6 和 4GB RAM 的 Windows 2003 SP2 服务器上运行。