2009-08-20 12 views
1

我們將Excel用於多個臨時樞軸/報告。System.OutOfMemoryException將包含單個大型DataGrid的頁面導入到Excel中(快速修復)

爲了將數據導入到Excel中,我們有一個通用頁面,其中包含一個從DataSet/DataTable綁定的簡單DataGrid。我們在Excel中使用此URL「導入外部數據」。

不幸的是,我們有一個查詢返回大約100列和40k行。應用程序服務器只有2GB的RAM,並且使用的內存跳轉了1個gig,然後導致System.OutOfMemoryException。

我打算重寫生成DataGrid的頁面,以便通過循環DataReader手動創建HTML表格,而不是將其全部加載到DataTable中。我也打算把更多的內存放入服務器。

我的問題是,我怎樣才能讓這個電子表格現在更新?是否有任何快速修復可以對DataGrid暫時讓它工作?我已經關閉了DataGrid的ViewState。

回答

1

我不認爲這是導致你的內存不足的DataGrid,而是你的DataSet。我們遇到了同樣的問題,那就是我們有數以萬計的記錄從DataSet中填充到樹視圖中,從而導致加載速度緩慢。原因是因爲DataSet會加載所有被查詢的數據,而不僅僅是被查看的數據。對此有兩種解決方法:創建一個即時加載器(使用DataReader),它將在需要時檢索數據(當然,您還有管理什麼數據是或不是本地數據的開銷)還是細化您的DataSet查詢可減少返回的記錄數。我猜測後者會更適合你目前的狀況。

相關問題