1

我们将 Excel 用于一些临时数据透视/报告。

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

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

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

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

4

1 回答 1

1

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

于 2009-08-25T21:08:53.113 回答