|
|
|
Essential Grid's GridGroupingControl can quickly provide custom views for non-nested data tables. Users can filter, group, sort and summarize data with summary rows. You can also add custom formula columns that can be used in grouping and summaries. The grouping architecture is flexible and can be used with any IList object with items having public properties.
Grid Grouping Control with Flat(Non-grouped) Data
Users can group and sort multiple columns. When edited, affected group, sort or filter will be automatically adjusted.
Grid Grouping Control with Grouped Data
|
|
|
|
It is possible to customize the layout of groups. You can add a Custom Section for each group and display the Summary Section above the details.
Custom Group Layout-Custom Section in Group
|
|
|
|
Any ADO.NET dataset can be displayed without any configuration using the Grid Grouping Control. The grid will automatically extract all column and relational information from the dataset and display them.
Simple Hierarchical Display
|
|
|
|
The GridGroupingControl supports data with hierarchical relationships and nested tables. Each record in a hierarchical grid can have multiple nested relations. Users may expand the record to show the nested relations. Each nested table can be expanded individually by clicking on the plus-minus button next to the caption text. Changes to any data element automatically updates the grid and positions the modified records relatively. Users may add new rows at any level.
GridGroupingControl showing hierarchical data
|
|
|
|
Foreign key relations can be defined to control the display values in Grid Grouping Control. A column named CompanyIDcan be replaced with CompanyName in a transparent manner. Multi-column drop-downs listing choices can also be edited and displayed.
Grid Grouping Control-Editable Multi-column Drop-down Based on Foreign Key Table
|
|
|
|
The Grid Grouping Control lets users add one or more summary rows to each group. Record modification works in complete synchronization with summaries. The calculation of summary values is fast with just O(log2 n) operations ('n' being the number of records in the table)due to the use of balanced tree structures in the grouping engine. Grouping has several built-in functions such as:
* Int32Aggregate, DoubleAggregate (Count, Min, Max, Sum)
* StringAggregate (MaxLength, Count)
* Count
* DistinctCount (Count, Values array)
* Vector (Values)
* DoubleVector (statistical methods: Median, Min, Max, 25% Quartile, 75% Quartile)
The grouping engine supports summaries that operate on vectors such as Distinct Count, Median, 25% and 75% Quartile. Users can also add custom summaries like weighted averages.
Grid Grouping Control Displaying Summary For Each Group
Summary can be included in the group caption rows and the display sorted by summary values.
Grid Grouping Control Sorted by Summary in Group Captions
|
|
|
|
A subset of records that satisfy user defined criteria can be extracted and displayed using Filters. A Filter Bar can be included in the grid to filter by selected-option from a drop-down list. It is also possible to adopt a custom filter dialog by customizing the 'Custom' option in the filter-bar cell's drop-down.
Grid Grouping Control-Dropped Filter Bar Cell
Dynamic Filter
This feature replaces the default filter bar with a custom filter bar that displays filtered results as you type each and every character. It has an user-friendly UI where in you can apply any compare operator with a single button click.
Grid Grouping Control-Dynamic Filter
|
|
|
|
Expression field facilitates the inclusion of a column with formula expression. The grouping engine comes with its own extensible formula engine for this purpose. Expression fields can be used in records just like a regular field. Users can calculate summary, group, sort or create filters based on expression fields.
The winning and losing columns have been created using expression fields in the illustration below:
Grid Columns Created Using Expression Fields
|
|
|
|
Grid contents can be sorted based on values of any column. You can perform custom sorting on a column by providing an IComparer object for that column.
Column 'Contact Name' Sorted Alphabetically
The sorting can be applied to multiple columns and the sort order displayed in column headers.
Sorted by Multiple Columns
|
|
|
|
Each hierarchical level can be grouped by the columns of its table. This feature is illustrated below:
Group By Column
|
|
|
|
Preview Rows can be enabled to display memo fields or notes for a given group or record. It is possible to add a preview section for each group or record.
Preview Rows
|
|
|
|
Additional header rows that span across visible grid columns in a stacked fashion can be created for the Grid Grouping Control. Columns can be grouped under each header row and these grouped columns get re-arranged by grouping headers. Complete drag-drop support is available for these header rows.
Multiple Stacked Headers
|
|
|
|
The appearance of the grid's grouping elements can be customized using base styles. Each element in the grouping display is associated with a base style that defines its appearance.
Group-Level Styling
Table-Level Styling
|
|
|
|
The API provides numerous options to customize cell ranges and let you specify custom covering of individual cells across multiple cells. Covering an image field cell across all records in it's category is illustrated belo
Grid Grouping Control with Custom Cell Ranges and Vertical Text
Group-indent cells are also covered and the Category text is specified to draw rotated.
|
|
|
|
when saving a record, if constraints are violated, the affected column is displayed with a red marker. Hovering the mouse pointer over the error indicator will display a ToolTip and provide information explaining the constraint violation.
Red Marker Indicating Constraint Violation
|
|
|
|
The appearance of the Grid Grouping Control can be enhanced by applying one of the available MS Office 2003 and 2007 styles.
MS Office 2007 Blue
MS Office 2007 Black
MS Office 2007 Silver
MS Office 2003
|
|
|
|
An Add New Record row option can be displayed at the top or bottom of the table. Alternatively, Add New Record can be displayed for each group.
The Add New Record works much like the current record. Users save changes with the ENTER key, cancel changes with the ESC key or release the record. The record will be sorted into the existing recordset and the record's parent group will be expanded.
Constraints are checked while saving the record. The group's category will be assigned as default values into the Add New Record when the user begins typing into the record for a group.
Add New Record Displayed for Each Group
|
|
|
|
When a user changes the foreign key value of a record in a nested table, the Grid Grouping Control will automatically move the record to its new parent table and scroll the table into view.
Changing the 'SupplierID' of a Product moves it to its respective Supplier group as illustrated below:
Change Foreign Key Value of Record in a Nested Table
Record Inserted into New Parent Table
|
|
|
|
When the record column used to categorize the table into groups is changed, the grid will automatically insert the record into the new group category and scroll the group into view. If necessary, a new group is inserted and/or the old group is removed from the table. changin the 'Country' of one record is illustrated below:
Change Category of Record
After the change, the record has been inserted under the new group and scrolled into view.
Record Inserted into New Group
|
|
|
|
The end user can customize the grid display by performing a drag-and-drop of column header cells.
When the header cell is dropped on a different column, the visible order of columns will be rearranged.
Drag Column Header Cell to a Different Column
When the cell is dropped on the group drop area, the table will be grouped by the column.
Drag Header Cell on Group Drop Area
|
|
|
|
A record can span multiple rows or columns. In the illustration below, the 'ID' and 'Photo' columns include records that occupy multiple rows and the 'Address' Column includes rows that occupy multiple columns:
Multiple Rows per Record Display
|
|
|
|
The Grid Grouping Control uses the TAB key to navigate to various cells in the Grid. Alternatively, any other key can also be utilized for this purpose.
|
|
|
|
Serialization is the process of saving the state of an object by converting it into a stream of bytes. Grid data can be serialized in one of the following three ways:
-
Serialize cell content-grid cell contents can be serialized into code
-
Serialize Range Style - Range style provides options for styling the grid cells. These cell range styles can also be serialized into code.
-
Serialize to ResX Files-grid cell contents can be serialized to ResX files
|
|
|
|
Grid Grouping Control supports XML schema serialization. Grid with XML serialized schema is illustrated below:
Serialized XML Schema for Grid
|
|
|
|
The Grid Grouping Control's contents can be exported to an MS Excel file. The Grid Grouping Control provides options to export Style, Borders, Preview Rows and Groups. The conversion can be done in two ways: export entire control's contents or just visible contents.
Grid Grouping Control to be Exported
Grid Grouping Control's Contents Exported to MS Excel
|
|
|
|
The Grid Grouping Control's contents can be exported to an MS Word file. You can be able to export nested tables as well. It also supports drawing custom header and footer.
Grid Grouping Control to be Exported
Grid Grouping Control's Contents Exported to MS Word
|
|
|
|
Grid Grouping Control is optimized to handle high refresh and update scenarios. Hooks were added to the Grid Grouping Control and they allow a more optimized ListChanged event logic to be plugged in. ListChanged logic is integrated into the main code base so that you can switch between old and new, more optimized code with only a few property settings. When frequent updates are being made in the grid, this has an optimal impact on the performance of the Grid Grouping Control, enabling minimal CPU usage.
Grid Grouping Control Optimization
|