100,000 を超えるレコードを読み込むためにultrawebgrid v11.1
、xmlとページングを有効にして使用しています。LoadOnDemand
イベントBindGrid()
内に機能を記述しました。InitializeDataSource
すべてのポストバック (保存、ExcelExport、ロード..) および/または部分的なポストバック (ページ ナビゲーション、並べ替え、フィルタリング..) で、データベースから 100,000 を超えるレコードを取得し、グリッドのデータソースを設定しています。
問題 1:
データベースから大量のデータをクエリするたびに、より多くの時間がかかります。on load
一度だけデータを照会し、その後グリッド内のデータが変更されたときに照会する方法はありますか?
問題 2:
を使用してUltrawebgridExcelExporter v11.1
います。[エクスポート] ボタンをクリックすると、Grid のデータ ソースが内部で初期化InitializeDataSource
され、データベースから取得された 100,000 を超えるレコードが使用されます。
LoadOnDemand
xmlが設定されている場合、Excelにエクスポートするたびに設定する必要があることを知りました
AllowPaging = False
and
LoadOndemand = LoadOnDemand.NotSet
次に、グリッドをバインドしてエクスポートします。
データベースから巨大なデータを取得するのに時間がかかり、バインドにさらに時間がかかります。バインド後、Excel へのエクスポート中に'System Out of Memory'
例外がスローされます。
問題 3:
上記の問題を解決した後でも、Excel 97-2003 で 65535 行を超える行をエクスポートできるかどうかわかりません。
xml を使用してグリッドのすべての操作のパフォーマンスを最適化する方法LoadOnDemand
。
コード:
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