代码之家  ›  专栏  ›  技术社区  ›  Robin Day

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

  •  1
  • Robin Day  · 技术社区  · 16 年前

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

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

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   user132411    16 年前

    我不认为是数据网格导致了内存不足的执行,而是数据集。我们遇到了同样的问题,从数据集中将成千上万条记录填充到treeview中,导致加载时间变慢。原因是数据集将加载正在查询的所有数据,而不仅仅是所看到的数据。有两种解决方法:创建一个即时加载器(使用DataReader),根据需要检索数据(当然,这样您就需要管理哪些数据是本地的或哪些数据不是本地的),或者优化数据集查询以减少返回的记录数。我猜后者更适合你目前的情况。

    推荐文章