RadGrid for ASP.NET

Client/server grid performance optimizations Send comments on this topic.
Performance tips and tricks > Client/server grid performance optimizations

Glossary Item Box

When you present large number of records at once you will see delays in the grid operations execution. Actually, the problem lies in the browser which cannot handle large amounts of HTML. You can try this with a very large treeview, menu, panelbar, etc (with thousands of items), or you can even try to select the contents of your page in the browser and you will see 100% CPU utilization for at least a minute.

To optimize the control performance on the client as much as possible, you may consider:

  1. Turning off all client features of the grid
  2. Turning off all row-related features (row select, row click, etc.). When enabling even a single client side row functionality, the grid adds additional scripts to the page which can slow down the performance of the product.
  3. Another option is to use built-in/custom paging and present only fixed set of records at a time - here are online examples for it:

    http://www.telerik.com/demos/aspnet/Grid/Examples/GeneralFeatures/Paging/DefaultCS.aspx
    http://www.telerik.com/demos/aspnet/Grid/Examples/Programming/CustomPaging/DefaultCS.aspx

         
    In case you have more than 100 records in a flat grid, it is recommended to turn on the build-in paging/custom paging of the grid. This will not only 
    optimize the grid loading time but also will enrich the user experience, thus giving him/her the flexibility to easily navigate through the grid records.
    When you have a hierarchical grid, the best approach is to limit the items presented in each level at once to 10-15 at most (through the PageSize 
    property of the GridTableView object).

  4. Unfortunately JavaScript and CSS implementations in IE are processed slower compared to Gecko-based browsers. There are lots of ActiveX/COM
    objects, garbage collector does not work at full extent in most of the scenarios, there are some CSS bugs, etc. That is the reason we recommend:
    • avoid using non-optimized images in CSS.
    • avoid using 1px background images with background-repeat: repeat-x.
    • avoid using rows css declarations with images (if applicable).
  5. If you have hierarchical grid, use on demand loading (HierarchyLoadMode.ServerOnDemand) of detail tables with DetailTableDataBind child
    tables content generation. You can combine these settings with:
    •   single expand for grid items at the same level
    •  switching on the AJAX mechanism of the control (EnableAJAX="true")
    • switching off the AJAX mode of the grid (EnableAJAX="false")and wrapping it in RadAJAXPanel (thus avoiding the serialization of the grid client object)
    • the techniques stated in points 1-4.
  6. Your final options is to turn off ViewState by using DataSourcePersistenceMode=NoPersistence. This however requires some extra work on your behalf and I will suggest that you review the following help topic and KB article very carefully: 
        Using NoPersistence in DataSourcePersistanceMode of GridTableView
        Using NoPersistence in DataSourcePersistanceMode of GridTableView(KB article) 

We have also discussed the performance of Telerik RadGrid vs. a table in this Forum post: performance compared to asp:table