2

100,000 を超えるレコードを読み込むためにultrawebgrid v11.1、xmlとページングを有効にして使用しています。LoadOnDemand

イベントBindGrid()内に機能を記述しました。InitializeDataSource

すべてのポストバック (保存、ExcelExport、ロード..) および/または部分的なポストバック (ページ ナビゲーション、並べ替え、フィルタリング..) で、データベースから 100,000 を超えるレコードを取得し、グリッドのデータソースを設定しています。

問題 1:

データベースから大量のデータをクエリするたびに、より多くの時間がかかります。on load一度だけデータを照会し、その後グリッド内のデータが変更されたときに照会する方法はありますか?

問題 2:

を使用してUltrawebgridExcelExporter v11.1います。[エクスポート] ボタンをクリックすると、Grid のデータ ソースが内部で初期化InitializeDataSourceされ、データベースから取得された 100,000 を超えるレコードが使用されます。

LoadOnDemandxmlが設定されている場合、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
4

3 に答える 3

3

問題 3 への回答 - 65535 行は Infragistics の制限ではなく、Excel 97/2003 形式の制限です。これを回避する唯一の方法は、Excel 2007 以降の形式 (XLSX) でエクスポートすることです。

于 2012-06-12T15:42:25.940 に答える
1

Infragistics からの返信は、レコードを複数のワークブックに分割することでした。65535 行を超える行を許可しないという制限があるためです。

彼らの新しい WebGrids はその制限を解決しましたが、私は CSV ファイルにエクスポートすることで解決しました。

したがって、質問に対する明確な答えはありません。回避するだけです:)

于 2012-06-12T13:49:23.603 に答える