Hello,
I am using an UltraGrid with virtual mode; the CellDataRequested event handler provides cell data from a data collection. The data in the collection are updated by a background thread. When the grid needs to refresh the follow statements are used:
_ultraDataSource.Rows.SetCount(_displayedViewRecords.Count);_ultraDataSource.ResetCachedValues();_ultraGrid.Rows.Refresh(RefreshRow.FireInitializeRow, true);
I noticed that most objects used within the grid are recreated: One instance of each following class is created for grid:
Infragistics.Win.UltraWinGrid.DataAreaUIElementInfragistics.Win.UltraWinGrid.UltraGridUIElementInfragistics.Win.UltraWinGrid.RowColRegionIntersectionUIElementInfragistics.Win.UltraWinGrid.RowSelectorHeaderUIElement
One instance of each following class is created for each row:
Infragistics.Win.UltraWinGrid.RowUIElementInfragistics.Win.UltraWinGrid.RowSelectorUIElementInfragistics.Win.UltraWinGrid.RowCellAreaUIElement
One instance of each following class is created for each column:
Infragistics.Win.UltraWinGrid.BandHeadersUIElementInfragistics.Win.UltraWinGrid.HeaderUIElementInfragistics.Win.TextUIElement
One instance of three or more classes is created for each cell.
I thought all the objects within the grid would be reused as much as possible. The data in my data collection are constantly updated and the grid performance is affected by the recreation of these objects within the grid. I am not sure if I have done something wrong.Could someone point me in the right direction please?
Thanks,Shaolin
Hi Milko,
Any update on this issue?
Best Regards,Shaolin
Thanks so much!Shaolin
Hello Shaolin,
I have investigated your second issue, about the tooltips, and I have asked our engineering staff to examine “Constantly updating the cells value prevents column headers tooltips from appearing” further. To ensure that it will receive attention, I have logged this behavior in our internal tracking system with a Development ID of #220474. So I’ve created a case for you CAS-174017-R0J1D8 and will update you for the progress of this issue via the mentioned case. You could reach your case following the link below:
https://ko.infragistics.com/my-account/support-activity
Thanks so much for your response!
Your suggestion can only suppress firing event InitializeRow. I am looking for ways to reuse the UIElements within the grid.
Let me give you some background. Currently, we use a third party grid control which have been working well for our applications. But our company decided not renew contract from that third party .Net library company. We are in the process of finding a replacement and selecting a grid control of good performance for large amount data. I have some success with UltraGrid but the grid performance is not to our satisfaction. There are two issues I need to resolve for now:
1. Navigation delay both by pressing keys and clicking on scroll bars.
2. Column header tooltips are not shown up during rapid data refreshing because column header UIElements are constantly recreated.
If you want to see what UIElements are constantly recreated during data refreshing, you can use a creation filter. I am sorry I am not able give you a sample.
Did you try to change the call to Refresh method of the Rows collection in your application? What the result of this was?
Can you also try to create a small sample reproducing this behavior? And please let me know what is the performance issue you are facing? Is this flickering? Is grid repainting too slow – for several seconds or event for a couple of minutes?
Looking forward to your reply as well as for a sample reproducing this behavior.