The tale of many grids
We are in the process of selecting a grid product for the next order management application. Even though the list of available grids is pretty big, once you start getting into the evaluation of the products, it narrows down pretty fast. I was not the one to do the research on the grids, so would like to give credit where it's due. All research on the grid products was done by Victoria Nemoytina, one of the senior developers on my team.
Grid Requirements:
- Ease of use - no reason to jump through hoops to create a simple grid display
- Fast Updates - don't you just hate it when you can see the pixels move as you scroll the grid?
- Easy to bind to datasets and to user defined data structures - beeing able to bind to a dataset makes it extremely easy to create a simple grid display. DataSet will give you events during the updates for validation. Sometimes, you need a more of a custom data structure, and beeing able to bind a grid to it provides for a good division betwene data storage and display. The easier both of these can be accomplished and the more flexibility we get, the more productive we will be
- Hierarchical display - pretty often we need to show parent/child relationships between the data. Contacts->Phone Numbers, Orders->Executions, Brokers->Orders, etc...
- Flexible layouts - this is even more critical for hierarchical data. The grid needs to show a lot of information, and beeing able to create a clear layout, show the relationship between the records and provide the ability for the user to adjust it is extremely important
- Grouping - a grid should assist in creating grouping and summaries.It should be possible to modify summary lines. A nice to have is to add custom grouping formuls
- Filtering - a filter bar and/or ability to add custom filtering into the grid will help out tramendously. We've implemented the functionality before without the grid support, however, wold be nice to have it all in one package
- Indepedant cell updates - a basic scenario is updating a cell value while a user is editing a row. Think "Running Stock Price"
SyncFusion Grid | SyncFusion Inc |
Infragistics Grid | Infragistics Inc |
XtraGrid | XtraGrid |
ComponentOne Grid | ComponentOne |
Feature | Infragistics | DevExpress |
---|---|---|
Periodic Data Updates | Yes - When sorting if off, new rows can be added and existing rows updated in the underlying recordset while the user is in edit mode. The grid is going to reflect the changes, but the user won't be kicked out of editing. | Yes - When the new rows are added to the underlying recordset, the grid does not reflect the changes unless you do a refresh, which kicks the user out of edit mode. If you try to add new rows directly to the grid, the user also gets kicked out of edit mode once you try to commit your change (which you have to do to be able to add another new row). You can set a new value for a particular cell without switching focus from a row that's been edited. So, the real-time updates are possible. |
Splits | Yes | Yes |
Formulas | Yes | Yes |
Export to Excel | Yes | Yes |
Import from Excel | Yes | Yes |
Virtual Mode (no data resides in a grid) | Yes - Can apply grouping, sorting and filtering in virtual mode | Yes - Can apply grouping, sorting and filtering in virtual mode. Applying grouping is faster in this mode than in Infragistics |
Filtering | Yes - You can hide, disable or change appearance for the rows that are filtered out. For a hierarchical grid you can filter the child or the parent rows only. | Yes |
Summaries | Yes - Can have header of footer Summaries | Yes - Can choose to display summaries for collapsed rows only. Can have header or footer Summaries. |
Merged Cells | Yes | |
Excel like presentation | Yes | |
Create Columns automatically by adding them to the end | Yes | |
Refresh Hierarhical Grid while keeping expansion status the same | ||
Multicolumn Drop-down list | Yes | |
Save one grid's Layout and apply it to other grid | Yes | Yes |
Rotated Column Headers | Yes | Yes |