I am glad that you have contacted the OpenEdge support as well since I believe that it is a suitable approach for this case as the OE support can provide the best possible assistance with the ProBindingSource and any difficulties that you are experiencing with it regarding performance.
We usually use a C# equivalent of the ProBindingSource that the OE developers have already provided if it is necessary to test any scenario on our end. I am not sure how complete this implementtaion is but is good enough for simple tests. That is why I setup a sample project with RadGridView with 3 columns and 60000 records. The ProBindingSource uses a DataTable as a data storage. I know that the difference in the sorting time between using a ProBindingSource and a DataTable is massive. But 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. Hence, any changes in the data management are very dangerous and sometimes not even possible.
By default, if the rows count is less than 10 000 we use quick sort to order the items. 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 the algorithms use non-linear data access. If the ProBindingSource is not optimized to get data not linearly, which I believe the OE support engineers could give more information about, 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.
With the current implementation and data management in RadGridView we are not able to introduce any appropriate solution except the BypassSort mechanism. However, the important part here is that I can confirm after my tests that it doesn't work as expected and as it should be. After introducing the BypassSort property, we also introduced the BypassFilter property due to the same reasons. Both properties are false by default. Hence, if you set only the BypassSort property to true, sorting logic still will not be skipped until you set the BypassFilter to true as well. This information is missed in our online documentation and we will update it accordingly. However, they should work separately without affecting one another.
That is why I have logged it in our feedback portal by creating a public thread on your behalf. You can track its progress, subscribe for status changes and add your comments on the following link - feedback item.
I have also updated your Telerik points.
Currently, the possible solution that I can suggest you to try is to enable the BypassFilter property as well in your project. It would be greatly appreciated if you can share the obtained result with us and whether you noticed any performance changes. Thank you in advance for your cooperation.
Along with creating a public feedback item for the confirmed issue with the BypassSort, I will create a new private support ticket on your behalf. You can find it in your Telerik account - Ticket ID: 1468461. Its purpose is to keep any further communication private since we are intending to introduce a fix as soon as possible and we would like to provide you the dlls containing the potential fix before releasing the Latest Internal Build. Thus, we will confirm that the fix would be suitable for your scenario.
Thank you in advance for your patience and understanding.
Dess | Tech Support Engineer, Sr.
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.