System.OutOfMemoryException将带有单个大型DataGrid的页面导入Excel(快速修复)

时间:2009-08-20 13:11:16

标签: c# asp.net excel datagrid out-of-memory

我们将Excel用于许多临时支点/报告。

要将数据导入Excel,我们有一个通用页面,其中包含一个从DataSet / DataTable绑定的简单DataGrid。我们在Excel中使用此URL“导入外部数据”。

不幸的是,我们有一个返回大约100列和40k行的查询。应用程序服务器只有2GB的RAM,使用的内存跳过1 gig,然后导致System.OutOfMemoryException。

我打算重写生成DataGrid的页面,通过循环访问DataReader而不是将其全部加载到DataTable中来手动创建HTML表。我还打算把更多的内存放到服务器上。

我的问题是,如何让这一个电子表格立即更新?我可以对DataGrid进行任何快速修复以暂时让它工作吗?我已经为DataGrid关闭了ViewState。

1 个答案:

答案 0 :(得分:1)

我认为DataGrid不会导致你的内存不足,而是你的DataSet。我们遇到了同样的问题,我们从DataSet中将数万条记录填充到树视图中,导致加载时间变慢。原因是因为DataSet将加载正在查询的所有数据,而不仅仅是看到的数据。有两种解决方法:创建一个即时加载器(使用DataReader),它将根据需要检索您的数据(当然,您有管理哪些数据是本地数据或不是本地数据的开销)或者精简您的DataSet查询以减少返回的记录数。我猜测后者会更适合你目前的情况。