Hi,UltraGridDocumentExporter1.Export(Me.ugvDataGrid, MyPath, DocumentExport.GridExportFileFormat.PDF) don't work when i put this line in a second thread .... why ?The thread procédure:Private Sub ThreadProcedure() Try _ugePDF.Export(_Grid, _Chemin, DocumentExport.GridExportFileFormat.PDF) Finally End Try End SubTo launch the thread: Public Sub Exporter() _ExportThread = New Thread(New ThreadStart(AddressOf ThreadProcedure)) _ExportThread.IsBackground = True _ExportThread.Start() End SubIt's working with ExcelExporter ...
Perhaps that's wrong?:
Public Sub New(ByVal uGrid As UltraGrid)
_ugePDF = New UltraGridDocumentExporter_Grid = uGrid_ugePDF.TargetPaperOrientation = Infragistics.Documents.Report.PageOrientation.Landscape_ugePDF.TargetPaperSize = Infragistics.Documents.Report.PageSizes.Letter_ugePDF.ImageCompressorType = ImageCompressorType.Flate_ugePDF.AutoSize = AutoSize.None_ugePDF.UseFileBuffer = False
End Sub
Hi,
It's really not a good idea to call Export on a seperate thread like this. You are essentially passing in a reference to the grid on the UI Thread into a new thread. If the new thread tries to refererence any properties or method of the grid you passed in, it could cause problems. This is not something that the exporters can support. If the Excel exporter works, then it's just pure luck that it does so, and I would not depend on it, nor assume that just because it appears to be working that it's working correctly.
but it's working correctly...and the export on the UI thread for more 4000 rows to pdf is very very very very too long...
Thank for your response
There are 2 main hurdles you'll need to overcome to create a purely in memory grid (ie. not on a form). You'll want to manually call CreateControl to get the component 'started'. After that you'll need to assign the grid a new BindingContext(). These steps are normally automatic when the grid is part of a form but since in this case we're working withouth a form or "site", we'll need to perform these steps. Below is a code snippet that should work to create a grid. Just fill in your data and you're set.
grid.CreateControl();
grid.DataSource = //your data
Infragistics.Win.UltraWinGrid.DocumentExport.UltraGridDocumentExporter exporter = new Infragistics.Win.UltraWinGrid.DocumentExport.UltraGridDocumentExporter();
exporter.Export(grid, "c:\\temp.pdf", Infragistics.Win.UltraWinGrid.DocumentExport.GridExportFileFormat.PDF);
Excellent !
Thank from France ! :)
Hi!
export works fine but not the group..
what's wrong ? :
_Grid = New UltraGrid _Grid.CreateControl() _Grid.BindingContext = New BindingContext() _Grid.DataSource = GridSource.DataSource _Grid.DataBind() For Each col As UltraGridColumn In GridSource.DisplayLayout.Bands(0).SortedColumns Dim bSort As Boolean = (col.SortIndicator = SortIndicator.Ascending) Dim cUltraGriCol As UltraGridColumn = _Grid.DisplayLayout.Bands(0).Columns(col.Index) _Grid.DisplayLayout.Bands(0).SortedColumns.Add(cUltraGriCol, bSort, True) Next
You need to specify the viewstyle for the grid to be OutlookGroupBy in order for it to perform any grouping. Try the following -
_Grid.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy;
great !
Thank 's a lot
Here's the exact code that I used, which generated an outlook groupby rendered to PDF.
{
this.ultraCheckEditor1.DrawFilter = this;
grid.InitializeLayout += InitLayout;
grid.Width = 500;
grid.Height = 500;
grid.BindingContext = new BindingContext();
grid.DataBind();
}
Infragistics.Win.UltraWinGrid.UltraGrid grid = (Infragistics.Win.UltraWinGrid.UltraGrid)sender;
nop :(