Last Updated: 03 Jun 2020 16:31 by ADMIN
Release R2 2020 SP1 (LIB 2020_2_603)
Created on: 22 May 2020 12:07
Category: GridView
Type: Bug Report
RadGridView: BypassSort doesn't improve sorting the rows when OpenEdge ProBindingSource is used as DataSource

When RadGridView is bound to a collection of 60 000 records the difference in the sorting time between using a ProBindingSource and a DataTable is massive. Changes in any core logic in both internal implementations, RadGridView and ProBindingSource, isn't so easy as it looks. Both products have been for a very long time on the market designed to cover the main scenarios of the target customers groups for which they are developed.

By default, if the rows count is less than 10 000 we use quick sort to order the items in the grid. If there are more items we use Red-Black tree. This is controlled by the UseHybridIndex property.  

(radGridView.MasterTemplate.ListSource.CollectionView as GridDataView).UseHybridIndex = false;

However, both of algorithms use non-linear data access. If the ProBindingSource is not optimized to get data not linearly, the performance wouldn't be satisfactory. 

That is why we have introduced the BypassSort functionality to cover this case after cooperation with the OE developers. Thus, our RadGridView won't perform any logic for sorting and the whole time necessary for sorting will depend on the DataSource itself (ProBindingSource in your case) and how this collection sorts its items: 

In the current version of Telerik UI for WinForms suite, the BypassSort property is ignored if the BypassFilter is not set to true as well. Hence, the sorting will be still slow.

Both properties shouldn't affect each other and if a developer wants to improve only the sorting performance, it is expected to enable only the ByPassSort property.


Dess | Tech Support Engineer, Principal
Posted on: 27 May 2020 09:23
Hello, Stefan,  

We have encountered the same problem on our side as well. Currently, we are working closely with the OpenEdge development team in order to introduce an appropriate fix for this case accordingly. We will do our best to introduce a fix in one of the upcoming latest internal builds as soon as possible. The fix will ensure that the BypassSort property will work independently from the BypassFilter property. Thus, you will be able to improve the sorting performance as previously discussed.

Meanwhile, I would highly encourage you to give our RadVirtualGrid a try as this is the control that will give you the best possible performance with the Telerik UI for WinForms suite. RadVirtualGrid is specifically designed and optimized for dealing with large number of records. It doesn't use data binding but loads data on demand via the CellValueNeeded event where a value for a certain cell is requested. It doesn't perform sorting internally in the virtual grid. Hence, you are not expected to obtain any performance problems with RadVirtualGrid. You have the same sorting UI as in RadGridView but once the sorting is changed, you need to extract the sorted data from your source collection and populate the cell values with the respective data in the CellValueNeeded. The following help articles are quite useful about setting up RadVirtualGrid with data and perform sorting: 

You can also refer to our Demo application >> Virtual grid examples which will give you very useful getting started experience.

Please make sure that you click the Follow button in the public feedback item. Thus, you will get notified once the statues is changed. 


Dess | Tech Support Engineer, Sr.
Progress Telerik

Progress is here for your business, like always. Read more about the measures we are taking to ensure business continuity and help fight the COVID-19 pandemic.
Our thoughts here at Progress are with those affected by the outbreak.
Posted on: 22 May 2020 12:40

I try to understand the problem:

"In the current version of Telerik UI for WinForms suite, the BypassSort property is ignored if the BypassFilter is not set to true as well. Hence, the sorting will be still slow."

So i tried: this-object:radGridView1:MasterTemplate:DataView:BypassFilter = true. 


Error: The method or operation is not implemented.