Hello,
i'm currently working with some hierarchical data that i wanted to present using a RadGridView with its ChildTable feature.
Unfortunately i'm running in quite severe performance issues once i try to auto expand the child tables (waiting between 15 to 25 seconds to see my data).
I've read that placing the RadGridView in a container with infinite height (like ScrollViewer, Grid with height 'Auto', etc) could lead to such performance issues, but i didn't place it in such containers.
I prepared and attached a little demo project to reproduce my problem.
It would be great if someone got some tips for me on how to improve the performance when expanding multiple levels of hierarchies in a RadGridView.
Greetings,
Josh
I have tested the provided sample project and indeed, when loading the RadGridView element with a two or a three-level hierarchy, with the "Auto expand child table" CheckBox being checked, a slower performance is observed. This occurs because each RadGridView control's size is measured with infinity when placed inside a HierarchyChildTemplate.
With that said, you could boost the performance when using hierarchies, and to do so, you could set the GroupRenderMode to Flat of each RadGridView element, as well as set a fixed Width and Height of every child grid view instance. On my end, inside the sample project, the performance was greatly boosted.
In conclusion, could you give this suggestion a try and let me know how it goes?
Regards,
Stenly
Progress Telerik
Love the Telerik and Kendo UI products and believe more people should try them? Invite a fellow developer to become a Progress customer and each of you can get a $50 Amazon gift voucher.
I tried your suggestion and can confirm some performance improvements.
With all three levels on a fixed width and height i get around 4-8 seconds UI freeze until the data is displayed. Unfortunately my usecase doesn't allow me to set fixed heights for the different hierachy levels, since i can't say how many entries each hierachy will have. And i neither want a big gap between two entries nor do i want to scroll inside a hierachy, but only on the outer most Data Grid.
I also tried to surround every Data Grid in the ChildTemplate with a Grid and RowDefinition with Height="*", while only setting a fixed width to the Data Grids. This also improved the performance to around 7-15 seconds UI freeze until the data is displayed. But still feels way to slow for my application.
There are several approaches that could boost the performance of the RadGridView control. They could be found in the Tips and Tricks article from our documentation, so, could you give them a try?
In addition, placing each child RadGridView control inside a Grid layout and with RowDefinition that has it's Height="*", could lead to better performance, as observed on your side. By doing this, the UI Virtualization mechanism would not be disabled. Additionally, you could set a fixed size to the ColumnWidth property of each grid, as well as disable the touch support. On my end, a load of a three-level hierarchy, with the checkbox being checked, took around 4 seconds.
A different approach that comes to my mind, would be to utilize the IsBusy property of the main RadGridView control. to show.