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

我们使用Excel进行一些特定的枢纽/报告。

为了将数据导入到Excel中,我们有一个简单的DataGrid页面,通过DataSet / DataTable进行绑定。 我们在Excel中使用这个URL“导入外部数据”。

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

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

我的问题是,我现在怎样才能让这个电子表格更新? 是否有任何快速修复,我可以做的DataGrid暂时让它的工作? 我已经closures了DataGrid的ViewState。

我不认为这是导致你的内存不足的DataGrid,而是你的DataSet。 我们有同样的问题,我们有成千上万的logging从DataSet中填充到树视图中,导致加载速度慢。 原因是因为DataSet会加载所有被查询的数据,而不仅仅是被查看的数据。 有两种解决方法:创build一个即时加载器(使用DataReader),它将根据需要检索数据(当然,这样你就可以pipe理数据是或不是本地的),或者细化你的DataSet查询减less返回的logging数。 我猜测后者会比较适合你目前的情况。