Recently I was looking for grid/table component in Javascript which is would be open-source, flexible enough and not tied heavily to some large framework. I'd like to share with you some brief notes of that research. I like SlickGrid more so I've explored it more.
SlickGrid
- https://github.com/mleibman/SlickGrid/wiki
- License: MIT
- PROs:
- Supports huge datasets via virtual scrolling. Looks like it's the only grid that supports horizontal virtual scrolling.
- Supports trees
- Data provider API - allows model creation. Transparent update of model.
- Long text editor support: double-clicick the cell and edit its content in a pop-up
- Automatic shortening of long content
- Supports cell horizontal spanning
- Hosted on GitHub and actively accepts pull requests
- CONs:
- Poor documentation
- No built-in dropdown editor
- No fixed columns
- Doesn't support cell vertical spanning.
- Column width specified only in pixels - no percents. However, with grid.autosizeColumns() columns can be proportionally resized
- Width adjusting is weird. Involves JavaScript handling, not just CSS.
- Always displaying editor (for example, dropdown box) is not easy. It requires asyncPostRenderer
- Mobile devices officially not supported (and not planned to support ever), but on my Android 4 tablet most functionality work OK. And there is a fork with support of mobile devices: https://github.com/reebalazs/SlickGrid-touch
EditableGrid
jqGrid
- http://www.trirand.com/blog/
- License: MIT
- PROs:
- Rich feature set: trees, subtables etc
- Mobile beta available
- Supports column hierarchy, though API for this is a nightmare.
- Hosted on GitHub, sometimes accept pull request
- CONs:
- No data model
- Inconvinient configuration (for example, proprietary format for dropdown lists instead of using JS object)
- Some plugins (for example, table to grid converter) pollute global namespace
DataTables
- http://www.datatables.net/
- License: GPLv2, BSD
- PROs
- CONs
- Editability requires plugin
- No data model
- No tree support
- Plugin for changing column width is buggy