Label Cloud

Tuesday, March 15, 2005

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"

The top candidates are:

SyncFusion GridSyncFusion Inc
Infragistics GridInfragistics Inc
ComponentOne GridComponentOne

Grid Features
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


1 comment:

Anonymous said...

In your blog you are talking about the xtragrid
You say in the summery that:"Refresh Hierarhical Grid while keeping expansion status the same" is poosible for the xtragrid
Can You tell me how you can do that ?