I have a strange performance issue on WPF2007 vol2 with xamDataGrid.
If I assign an untyped DataSet with just 40 records to a grid, and the grid previously has only 1 or 2 rows displayed, then it takes almost 2 seconds to display the grid with the new data. But if I now assign a dataset with 1,000 records to the same grid which is now displaying a full page of data, it displays in 0.1 seconds! It seems that if the xamDataGrid has a largely empty screen performance is much slower when you then display a full screen of data.
Is there a solution to this problem ?
I also find grouping takes several seconds, as does expanding a hierarchical node. Winforms, on the other hand, is instant - and this is progress ?
Yes, I tried using just pure WPF & Infragistics components (no SandDock), and it still takes the same speed. On the Northwind database (SQL 2005), doing a SELECT * FROM Invoices has the same issue as my real data. The Northwind data is returned to the XBAP as an untyped Dataset from an ASMX web-service, and bound to both grids, e.g. xamDataGrid1.DataSource = ds.Tables[0].DefaultView;
The worst-case scenario is when only 1 or 2 rows of the grid are displayed by initially moving the splitter to the top of the screen before retrieving data. Then, after assigning data to the grids, drag the grid splitter down to the bottom to make both grids full-screen, and it takes around 10 seconds to display. See attached XAML file for screen layout. If I change RecordContainerGenerationMode="LazyLoad" it only takes about 2 seconds to display. Is that enough information for you to reproduce this issue ?
My concern now if I use LazyLoad is will I end up using loads of memory, and when are record-containers freed up - when a different set of data is bound to the grid ?
Thanks,
Andy.
"admackie" wrote in message news:18057@forums.infragistics.com... RecordContainerGenerationMode="LazyLoad" improves matters significantly. The resize issue the demo app shows isn't showing the true extent of the resizing performance problem that I'm experiencing. In reality, I find it's taking 7 seconds to resize a window that contains two XamDataGrids. The window is split into 4 quarters via a 2x2 Grid and 2 GridSplitters, with XamDataGrids in the top 2 quarters, and using SandDock for XBAP docking support. I'm not sure why, but the data I'm getting from the database seems much slower to resize - possibly datatypes, number of columns/rows ? Haven't been able to pin that down yet. But I think it's the issue you describe. I need to load 10 - 20,000 rows of data, so user can do grouping/filtering/summing etc. as they like. With 20,000 records, the default settings give good load & sort performance, but fairly poor performance when docking/resizing - up to 7 seconds I found with 2 grids present. RecordContainerGenerationMode="LazyLoad" gave vastly better docking/resizing speeds (less than a second), although sorting was marginally slower - about 1 second compared to approx 0.5 second. I suppose it's a question of trade-offs to get the best overall user-experience. I found PreLoad killed performance, taking around 40 seconds to sort. Is it possible to specify a minimum number of row/cell elements to create up front - e.g. create say 100 rows ? Or does that happen automatically with LazyLoad as the first page is displayed anyway ? Many thanks,Andy. http://forums.infragistics.com/forums/p/3066/18057.aspx#18057
RecordContainerGenerationMode="LazyLoad" improves matters significantly.
The resize issue the demo app shows isn't showing the true extent of the resizing performance problem that I'm experiencing. In reality, I find it's taking 7 seconds to resize a window that contains two XamDataGrids. The window is split into 4 quarters via a 2x2 Grid and 2 GridSplitters, with XamDataGrids in the top 2 quarters, and using SandDock for XBAP docking support. I'm not sure why, but the data I'm getting from the database seems much slower to resize - possibly datatypes, number of columns/rows ? Haven't been able to pin that down yet.
But I think it's the issue you describe. I need to load 10 - 20,000 rows of data, so user can do grouping/filtering/summing etc. as they like. With 20,000 records, the default settings give good load & sort performance, but fairly poor performance when docking/resizing - up to 7 seconds I found with 2 grids present. RecordContainerGenerationMode="LazyLoad" gave vastly better docking/resizing speeds (less than a second), although sorting was marginally slower - about 1 second compared to approx 0.5 second. I suppose it's a question of trade-offs to get the best overall user-experience. I found PreLoad killed performance, taking around 40 seconds to sort.
Is it possible to specify a minimum number of row/cell elements to create up front - e.g. create say 100 rows ? Or does that happen automatically with LazyLoad as the first page is displayed anyway ?
Many thanks,Andy.