|
|
|
|
|
Essential Grouping
Essential Grouping allows users to group data, access filtered results and have summary information without the overhead of graphical display code. The Grouping Engine extracts all the data manipulation, handles the data and gives users ways to access the needed results.
|
|
|
|
The Grouping Engine encapsulates the Essential Grouping architecture. Users set an IList datasource to impose multicolumn sorts, filters, grouping with summaries and nested tables.
Essential Grouping uses balanced binary trees as a core data structure instead of arrays. Binary trees have the advantage that parent branches can cache information about their children. Inserting, removing and moving of records only takes O(Log2n) operations instead of the O(n) operations with linear data structures.
Users may access the Engine through their own code. The following screenshot is a simple form showing grouped data in a TextBox.
Grouped data in a TextBox
|
|
|
|
Essential Grouping has no UI dependencies. It may be used with any UI controls, or no controls at all. Examples follow illustrating Essential Grouping in use with standard controls.
DataGrid statistics tied to labels via the Grouping Engine
This screenshot depicts a Windows Forms DataGrid and several labels on a form. The labels display statistics based on the values in the DataGrid. As users edit items or insert or delete rows in the DataGrid, the labels automatically maintain the proper values through the Grouping Engine.
A Randomness test using the Grouping Engine
This screenshot shows several labels on a form. The labels display statistics based on the random values between 0 and 100 generated using System Random. The program inserts the random numbers into an IBindingList object that has been set to the DataSource of a Grouping Engine object. This means the engine is dynamically monitoring the numbers and maintaining the statistics as each new item is added to the collection.
|
|
|
|
Using Essential Grouping is straight-forward. Set a datasource / IList object with public properties into an Essential Grouping Engine. Following is a code window showing the process:
Initialization code for using Essential Grouping
Once the engine is initialized, it is possible to sort, filter, group and summarize data using straight-forward code. Once the tracking items are set up (provided the datasource supports IBindingList), the Engine will automatically maintain the information being tracked. It can then be accessed through collections in the Engine. The following screenshot shows simple data that has been grouped by column C. There are three lists, the raw data, the visible data before an ExpandAll call, and finally, the visible data after the ExpandAll call. The middle section lists out the group captions, showing summary information on the group. The bottom listing shows the captions plus the actual records in the expanded groups. This is the type of raw (non-UI specific) information that Essential Grouping provides access to.
Grouped data available from the Engine
|
|
|
|
|
|
|
|