Row Selection: Allows users to select multiple rows in the grid.
Column Selection: Enables users to select entire columns.
Grouped Row Selection: Can render optional group-level checkboxes that select all descendant data rows.
Checkbox-Based Row Reorder: Can hand checkbox-selected rows to RowOrderPlugin so checked rows drag as one compact block.
Automatic Theme Support: The plugin adapts to light or dark themes based on user settings.
Flexible and Extensible: This plugin demonstrates the potential for creating custom plugins, encouraging developers to expand the grid's functionality further.
To enable the RowSelectPlugin in your RevoGrid setup, you have two options:
You can also use the future-compatible object form:
1
grid.rowSelect = {
2
grouping: {
3
enabled:true,
4
},
5
};
When enabled, selecting a group checkbox selects all descendant data rows. Selecting only part of a group reflects an indeterminate state on the group checkbox. Synthetic grouping rows are not included in selected row counts.
RowSelectPlugin can opt into RowOrderPlugin integration. When enabled, dragging a checked row moves all visible checked data rows in the current row viewport as a compact block.
This feature is disabled by default. Existing row-order behavior is unchanged unless rowSelect.rowOrder is enabled.
Checkbox selection takes priority over range selection only when the dragged row is checked. If the dragged row is not checked, RowOrderPlugin falls back to its current range-selection or single-row behavior.
Only visible checked data rows move during the drag. Rows hidden by filtering, collapsed grouping, or collapsed tree branches remain selected but are not part of that drag operation. Synthetic grouping rows are never moved as selected data rows.
Row selection is stored against real data row indexes, not the rendered row position. This keeps checkbox state stable when the visible row topology changes.
| Case | Behavior |
| --- | --- |
| Filtering | Selected hidden rows remain selected. The rowselected event is re-emitted so visibleCount and visibleRowsCount reflect the filtered view. |
| Sorting | Checkbox state follows the same data rows after sort order changes. |
| Row drag | Checkbox state follows moved data rows after row order changes. |
| Checkbox row-order | When rowSelect.rowOrder is enabled, visible checked rows are moved as a compact block before range selection is considered. |
| Grouping | Group checkboxes are opt-in through rowSelect.grouping; synthetic group rows are not counted as selected rows. |
| Tree data | When TreeDataPlugin is registered, selecting a tree parent toggles the parent and descendants. Dragging a checkbox-selected tree parent with descendants preserves the subtree relationship. |
| API | Default | Meaning |
| --- | --- | --- |
| ColumnRegular.rowSelect | false | Renders row-selection checkboxes in normal data cells for that column. A predicate can hide checkboxes for specific cells. |
| grid.rowSelect.grouping | false | Enables group-level row-selection checkboxes. Accepts true or { enabled: true }. |
| grid.rowSelect.rowOrder | false | Enables checkbox-selected row drag integration with RowOrderPlugin. Accepts true or { enabled: true }. |
| additionalData.rowSelect | none | Legacy alias for grid.rowSelect. Prefer direct grid.rowSelect. |
The rowselected event exposes totals for both all selectable rows and the currently visible selectable rows:
| Event field | Meaning |
| --- | --- |
| count | Selected real data rows across the full dataset. |
| allRowsCount | Selectable real data rows across the full dataset. |
| visibleCount | Selected real data rows currently visible. |
| visibleRowsCount | Selectable real data rows currently visible. |
The live demo on this page is the common Bulk Row Selection example. It includes flat, grouped, and tree modes, a row checkbox column, row drag handles, group checkbox selection, filtering, sorting, selected/visible totals, and opt-in checkbox-based row reorder.