We are happy to announce that for Q2 2010 we will be introducing a few new controls . Two of those are actually implementations of quite old controls. I am talking about RadListControl (the new list box) and RadDropDownList (the new combo box). The main purpose in the lives of those two guys is to replace the current RadListBox and RadComboBox and to address their current shortcomings without breaking any existing applications. The new controls will coexist with the old ones and they will be faster… a lot faster, and more flexible in terms of extending and/or replacing functionality as well as visual appearance.
A major improvement over our previous list box (and combo box) is that RadListControl/RadDropDownList is now able to bind to 150 000 data records in about 1.5 seconds. Not bad. For comparison the standard ListBox binds to the same data set for about 16 seconds (these numbers are measured on an old Pentium 4 PC running at 3 Ghz). On the screenshot below you can see the binding time for both RadListControl and RadDropDownList being bound one after the other.
Loading 150 000 items takes about a second
Another great improvement is that the new controls will now allow you to replace their major components giving you control over visual and data behavior. Users can now exercise control over the scrolling logic, the items layout and even the low level data binding logic by providing their own data layer. There is also a new event for formatting visual items, ala CellFormatting in RadGridView and yet another event that allows you to create custom visual items which can have any content you can imagine. Users will also be able to replace the editor of the RadDropDownList with something different than a text box.
Using VisualItemFormatting allows for complete customization of each item’s appearance
The RadListControl/RadDropDownList now allows users to create the UI part of the control in a data driven manner via the ItemDataBinding and CreatingVisualListItem events. ItemDataBinding fires before a logical item is being data bound and this item can be swapped with a custom one. In conjunction with the CreatingVisualListItem users can now construct their own visual items that present the state of their data as accurately as required.
Using CreatingVisualListItem event makes it possible to replace the default item with your own custom element
Also, an important fact is that the new controls are permanently virtualized. The new virtualization mechanism is shared with RadGridView and provides exceptional data binding and visual performance. RadListControl/RadDropDownList provide super smooth scrolling even with hundreds of thousands of items and if somehow users manage to bog down the scrolling they can switch to deferred scrolling mode and will still be able to use the controls without a hitch. It is also possible to have visual items with arbitrary height, that is, every item can have a size that is appropriate to its own content. This is not often required but the feature is there if you need it.
This high level picture is all well and good but how do we actually do these things? We will show you how to utilize the capabilities of the new controls in a series of blog posts which will also be available as help articles with source code examples and explanations of all the details.
Nikolay Diyanov Diyanov is the Product Manager of the Native Mobile UI division at Progress. Delivering outstanding solutions that make developers' lives easier is his passion and the biggest reward in his work. In his spare time, Nikolay enjoys travelling around the world, hiking, sun-bathing and kite-surfing.
Find him on Twitter @n_diyanov or on LinkedIn.