【发布时间】:2012-06-08 11:50:48
【问题描述】:
我正在使用 ultrawebgrid v11.1 和 xml LoadOnDemand 并启用分页以加载超过 100,000 条记录。
我在InitializeDataSource 事件中编写了BindGrid() 功能。
在每个回发(保存、ExcelExport、Load..)和/或部分回发(页面导航、排序、过滤..)中,我从数据库中获取超过 100,000 条记录并设置网格的数据源。
问题 1:
每次从数据库中查询大量数据都需要更多时间。有没有办法只查询一次数据on load,然后在修改网格中的数据时。
问题 2:
我正在使用UltrawebgridExcelExporter v11.1。点击 Export 按钮,Grid 的数据源在InitializeDataSource 内部初始化,从数据库中获取超过 100,000 条记录。
我要知道,xmlLoadOnDemand设置的时候,每次导出到excel都要设置
AllowPaging = False
and
LoadOndemand = LoadOnDemand.NotSet
然后绑定网格并导出。
从数据库中获取大量数据需要很长时间,而绑定则需要更长的时间。绑定后,导出到excel时抛出'System Out of Memory'异常。
问题 3:
我不确定即使解决了上述问题,我能否在 Excel 97-2003 中导出超过 65535 行?
如何使用xmlLoadOnDemand优化网格所有操作的性能。
代码:
Protected Sub UWGrid_InitializeDataSource(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.UltraGridEventArgs) Handles UWGrid.InitializeDataSource
UWGrid.DataSource = dsData 'record set with 100000 rows.
End Sub
Protected Sub btnExportToExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportToExcel.Click
UWGrid.DisplayLayout.Pager.AllowPaging = False
UWGrid.DisplayLayout.LoadOnDemand = LoadOnDemand.NotSet
UWGrid.DataBind()
'Dim wBook As New Excel.Workbook(Excel.WorkbookFormat.Excel2007)
UltraWebGridExcelExporter1.DownloadName = "ExportFile.xls"
UltraWebGridExcelExporter1.Export(UWGrid)
End Sub
【问题讨论】:
-
Infragistics 论坛上发布并回答了相同的问题:news.infragistics.com/forums/p/70018/354551.aspx#354551
-
@roken - 那就是我,这个问题没有答案。这是 Infragistics 的限制。
-
当你得到 OutOfMemoryException 时,#2 的调用堆栈中有什么?如果在导出器将工作簿写入内存流时发生这种情况,则可以在将 ExportMode 设置为 Custom 时将文件写入文件系统,然后稍后读取文件以供稍后下载。
-
@alhalama :是的,这是在导出器写入内存流时。应用程序架构不允许我们创建文件。我必须在记忆中做到这一点。目前,我将导出为 CSV 作为临时解决方案。
-
@EstefanyVelez 是否可以创建一个临时文件,删除对 excel 导出器和 excel 对象的引用,然后加载临时文件并发送给客户端?这应该允许对对象进行垃圾收集,并允许您导出更多数据。
标签: export-to-excel infragistics ultrawebgrid