WinForms TreeList - Improved Performance and API (Coming soon in v17.1)

Thinking Out Loud
04 May 2017

I wanted to share some of the performance and API improvements we've made to the DevExpress WinForms TreeList Control in our v17.1 development cycle. If you're not familiar with this product, you can think of it as a treeview and listview hybrid...The component is designed to display self-referenced hierarchies and render it as a traditional tree or a grid.

Before I begin, let me offer the following...If you're evaluating this product and would like to test it against competing products, we'd be more than happy to provide the sample project used to generate these test results. I think you'll be pleasantly surprised as to how fast our WinForms TreeList executes the functions listed below.

Though we are not finished with all the optimizations we hope to introduce this year, I want to assure you that our goal is to improve the TreeList to such a degree that it's on par with our WinForms Grid from a performance perspective.

Performance

The following table describes the performance improvements shipping inside v17.1.

Time (ms) DevExpress TreeList v16.2 DevExpress TreeList v17.1 DevExpress WinForms Grid
Sorting by one or more columns
Flat list 116 47 14
Self-referenced hierarchy 58 30 n/a
Filtering by simple or complex criteria
Flat list 46 31 12
Self-referenced hierarchy 52 36 n/a
Searching (against a single column/against all columns)
Flat list 116/444 98/321 92/173
Self-referenced hierarchy 119/457 100/332 n/a
Loading from data source (10k/100k records)
Flat list 36/650 34/466 5/10
Bound hierarchy 81/2005 79/1703 n/a
Unbound hierarchy 854/minutes 103/4182 n/a

API

In this release, we've updated the Tree List's API so that it is more consistent and in-line with our WinForms Grid. These changes address common data operations such as obtaining and setting cell values, selection, sorting and filtering, formatting and hit testing. Our new API also includes a number of tree-specific features including a LINQ-friendly node iterator:

treeList.NodesIterator.Do(node =>
{
    if((State)node["State"] == State.Inactive))
        node.Expanded = false;
});
int count = treeList1.NodesIterator.Visible
   .Where(node => (decimal)node["Discount"] > 0).Count();

By extending the Tree List's API, we've been able to improve the product's core functionality and expect to evolve it further in coming release cycles. For instance, the filter related API changes introduced in v17.1 allowed us to incorporate Excel-inspired Filtering and the Auto-Filter Row....and helped improve core capabilities such as the availability of predefined filters when using Excel-inspired filter dropdowns.

WinForms TreeList Filtering

As always, we welcome your comments and feedback. Tell us how you're currently using our WinForms TreeList Control.

Free DevExpress Products – Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We’ll be happy to follow-up.
No Comments

Please login or register to post comments.