RadGridView API allows you to tweak your application for optimal performance. You should be familiar with the following performance tips:
RadGridView API supports UI Virtualization, which processes only information loaded in the viewable area, which reduces the memory footprint of the application and speeds up loading time thus enhancing additionally the UI performance. Read more.
Try not to place RadGridView in controls/panels which will measure it with infinity. For example, ScrollViewer, StackPanel and Grid with Row.Height=Auto or Column.Width=Auto will measure with infinity. When the control is measured with infinity the virtualization turns off.
Binding large dataset to the control is a time consuming task that can at times test the user’s patience. To provide better user experience RadGridView exposes IsBusy property.
RadGridView offers an excellent integration with Telerik's RadDataPager. Read more.
In general, the fastest performance can be achieved if you bind the columns to a simple property because we will use lambda to get the value. If you bind to complex property (sub property) we have to use bindings to get the value for the cell, which is much slower then lambdas.
Set fixed Width for the columns.
- Configuring RadGridView.ColumnWidth to a specific width (like 100) will increase both horizontal and vertical scrolling performance.
- Auto is a little bit slower
- Star is the slowest (this is most noticeable when you have a lot of columns).
Disable validation in view mode through configuring ValidatesOnDataErrors="InEditMode".
Avoid using converters. Calling a converter is a time-consuming operation and this will slow down the performance.
Avoid applying a RowStyle and/or an AlternateRowStyle that modifies the default GridViewRow ControlTemplate. This will result in a performance hit.
DataLoadMode="Asynchronous" - using this mode is not recommended, it leads to potential problems. Please do not use it.
If applicable, try to stick to the default templates and avoid overriding templates of rows and cells.
As of Q1 2012 SP1 you have the option to disable the Telerik StyleManager and to style the controls using Implicit Styles. There are a number of benefits of using implicit styles over the Telerik StyleManager. For more information, please refer to the respective help article.
As of Q3 2012 we introduced a new rendering mode - Flat. Configuring it involves rendering rows one below the other, which leads to better performance results. You can also refer to the GroupingModes article.
As of 2013 Q2 SP we introduced Lightweight Templates for RadGridView and RadTreeListView. Their main idea is to limit the number of visual elements within the templates in order to speed up the performance of the control. Read more.
You can also find the blog post on How To Boost RadGridView Performance for WPF and Silverlight Using Lightweight templates.
RadGridView with applied Windows8, Windows8Touch or Office2013 Theme - Telerik controls in these themes use resources, which are linked to one major singleton that contains the colors used in them. Such an approach slows down the performance of virtualized components, such as RadGridView. You can consider applying the Lightweight Templates in order to speed up the performance. Please check this detailed article, which explain the purpose of these styles.
As of Q2 2014 SP release, we introduced the option to turn off generating of automation peers through the new global AutomationMode property of the AutomationManager. You can check the UI Automation Support article on how to set the AutomationMode property to Disabled.
TouchManager - another optimization would be to disable the Touch Support. You can refer to the Touch Support article.
As of R2 2016 GridViewComboBoxColumn exposes a new property - IsLightweightModeEnabled. Setting it to true significantly increases the lookup logic of GridViewComboBoxColumn. Thus, the overall performance of RadGridView will be improved as well.
When you have child RadGridViews placed in RowDetails or a Hierarchy structure, make sure to specify fixed dimensions for them (Height/MaxHeight and Width/MaxWidth). Otherwise their UI Virtualization mechanism will be disabled.