Row headers
Use default row headers (1, 2, 3), or set them to custom values provided by an array or a function.
Overview
Row headers are gray-colored columns that are used to label each row. By default, these headers are filled with numbers displayed in ascending order.
To turn the headers on, set the option rowHeaders to true.
Bind rows with headers
You can bind row numbers with row headers. This is used mostly to differentiate two business cases in which Handsontable is most often used.
-
When moving a row in a typical grid-like application, the numbers in the row headers remain intact. Only the content is moved.
-
In a data grid, each row has its unique ID. Therefore, the column header should follow its row whenever it changes its position in the grid.
Basic example
To enable the plugin, set the bindRowsWithHeaders property to true. Move the rows in the example below to see what this plugin does.
Possible values:
true- Enables the plugin.strict- Enables the plugin and the order of indexes is not reorganized after the operation such as hiding or moving rows.loose- Enables the plugin and the order of indexes is re-organized after the operation such as hiding or moving rows.
import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';
// Register all Handsontable's modules.registerAllModules();
// Generate an array of arrays with a dummy dataconst generateData = (rows = 3, columns = 7, additionalRows = true) => { let counter = 0; const array2d = [...new Array(rows)].map((_) => [...new Array(columns)].map((_) => counter++));
if (additionalRows) { array2d.push([]); array2d.push([]); }
return array2d;};
const container = document.querySelector('#example1');
new Handsontable(container, { data: generateData(), colHeaders: true, rowHeaders: true, height: 'auto', contextMenu: true, manualRowMove: true, bindRowsWithHeaders: true, autoWrapRow: true, autoWrapCol: true, licenseKey: 'non-commercial-and-evaluation',});import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';
// Register all Handsontable's modules.registerAllModules();
// Generate an array of arrays with a dummy dataconst generateData = (rows = 3, columns = 7, additionalRows = true) => { let counter = 0;
const array2d = [...new Array(rows)].map((_) => [...new Array(columns)].map((_) => counter++));
if (additionalRows) { array2d.push([]); array2d.push([]); }
return array2d;};
const container = document.querySelector('#example1')!;
new Handsontable(container, { data: generateData(), colHeaders: true, rowHeaders: true, height: 'auto', contextMenu: true, manualRowMove: true, bindRowsWithHeaders: true, autoWrapRow: true, autoWrapCol: true, licenseKey: 'non-commercial-and-evaluation',});Tree grid
A tree grid enables you to represent the nested data structures within the data grid. To learn more about this feature, see the Row parent-child page.
Related articles
Related guides
Configuration options
Core methods
Hooks
Plugins