Column hiding
Hide individual columns to reduce screen clutter and improve the grid’s performance.
Overview
“Hiding a column” means that the hidden column doesn’t get rendered as a DOM element.
When you’re hiding a column:
- The source data doesn’t get modified.
- The
HiddenColumnsplugin doesn’t participate in data transformation
(the shape of the data returned by thegetData*()methods stays intact).
Enable column hiding
To enable column hiding, use the hiddenColumns option.
import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';
// Register all Handsontable's modules.registerAllModules();
const container = document.querySelector('#example1');
new Handsontable(container, { licenseKey: 'non-commercial-and-evaluation', data: [ ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'], ['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'], ['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'], ['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'], ['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'], ], height: 'auto', colHeaders: true, rowHeaders: true, contextMenu: true, // enable the `HiddenColumns` plugin hiddenColumns: { columns: [2, 4, 6], indicators: true, }, autoWrapRow: true, autoWrapCol: true,});import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';
// Register all Handsontable's modules.registerAllModules();
const container = document.querySelector('#example1')!;
new Handsontable(container, { licenseKey: 'non-commercial-and-evaluation', data: [ ['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'], ['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'], ['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'], ['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'], ['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'], ], height: 'auto', colHeaders: true, rowHeaders: true, contextMenu: true, // enable the `HiddenColumns` plugin hiddenColumns: { columns: [2, 4, 6], indicators: true, }, autoWrapRow: true, autoWrapCol: true,});Set up column hiding
To set up your column hiding configuration, follow the steps below.
Specify columns hidden by default
To both enable column hiding and specify columns hidden by default, set the
hiddenColumnsconfiguration option to an object.In the object, add a
columnsconfiguration option, and set it to an array of column indexes.Now, those columns are hidden by default:
JavaScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example2');new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// enable the `HiddenColumns` pluginhiddenColumns: {// specify columns hidden by defaultcolumns: [3, 5, 9],},autoWrapRow: true,autoWrapCol: true,});TypeScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example2')!;new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// enable the `HiddenColumns` pluginhiddenColumns: {// specify columns hidden by defaultcolumns: [3, 5, 9],},autoWrapRow: true,autoWrapCol: true,});Show UI indicators
To easily see which columns are currently hidden, display UI indicators.
To enable the UI indicators, in the
hiddenColumnsobject, set theindicatorsproperty totrue:JavaScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example3');new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,hiddenColumns: {columns: [3, 5, 9],// show UI indicators to mark hidden columnsindicators: true,},autoWrapRow: true,autoWrapCol: true,});TypeScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example3')!;new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,hiddenColumns: {columns: [3, 5, 9],// show UI indicators to mark hidden columnsindicators: true,},autoWrapRow: true,autoWrapCol: true,});Set up context menu items
To easily hide and unhide columns, add column hiding items to Handsontable’s context menu.
Enable both the
ContextMenuplugin and theHiddenColumnsplugin. Now, the context menu automatically displays additional items for hiding and unhiding columns.JavaScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example4');new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// enable the context menucontextMenu: true,// enable the `HiddenColumns` plugin// automatically adds the context menu's column hiding itemshiddenColumns: {columns: [3, 5, 9],indicators: true,},autoWrapRow: true,autoWrapCol: true,});TypeScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example4')!;new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// enable the context menucontextMenu: true,// enable the `HiddenColumns` plugin// automatically adds the context menu's column hiding itemshiddenColumns: {columns: [3, 5, 9],indicators: true,},autoWrapRow: true,autoWrapCol: true,});You can also add the column hiding menu items individually, by adding the
hidden_columns_showandhidden_columns_hidestrings to thecontextMenuparameter:JavaScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example5');new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// individually add column hiding context menu itemscontextMenu: ['hidden_columns_show', 'hidden_columns_hide'],hiddenColumns: {columns: [3, 5, 9],indicators: true,},autoWrapRow: true,autoWrapCol: true,});TypeScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example5')!;new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,// individually add column hiding context menu itemscontextMenu: ['hidden_columns_show', 'hidden_columns_hide'],hiddenColumns: {columns: [3, 5, 9],indicators: true,},autoWrapRow: true,autoWrapCol: true,});Set up copy and paste behavior
By default, hidden columns are included in copying and pasting.
To exclude hidden columns from copying and pasting, in the
hiddenColumnsobject, set thecopyPasteEnabledproperty tofalse:JavaScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example6');new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,contextMenu: ['hidden_columns_show', 'hidden_columns_hide'],hiddenColumns: {columns: [3, 5, 9],indicators: true,// exclude hidden columns from copying and pastingcopyPasteEnabled: false,},autoWrapRow: true,autoWrapCol: true,});TypeScript import Handsontable from 'handsontable/base';import { registerAllModules } from 'handsontable/registry';// Register all Handsontable's modules.registerAllModules();const container = document.querySelector('#example6')!;new Handsontable(container, {licenseKey: 'non-commercial-and-evaluation',data: [['A1', 'B1', 'C1', 'D1', 'E1', 'F1', 'G1', 'H1', 'I1', 'J1', 'K1', 'L1'],['A2', 'B2', 'C2', 'D2', 'E2', 'F2', 'G2', 'H2', 'I2', 'J2', 'K2', 'L2'],['A3', 'B3', 'C3', 'D3', 'E3', 'F3', 'G3', 'H3', 'I3', 'J3', 'K3', 'L3'],['A4', 'B4', 'C4', 'D4', 'E4', 'F4', 'G4', 'H4', 'I4', 'J4', 'K4', 'L4'],['A5', 'B5', 'C5', 'D5', 'E5', 'F5', 'G5', 'H5', 'I5', 'J5', 'K5', 'L5'],],height: 'auto',colHeaders: true,rowHeaders: true,contextMenu: ['hidden_columns_show', 'hidden_columns_hide'],hiddenColumns: {columns: [3, 5, 9],indicators: true,// exclude hidden columns from copying and pastingcopyPasteEnabled: false,},autoWrapRow: true,autoWrapCol: true,});
Column hiding API methods
For the most popular column hiding tasks, use the API methods below.
To see your changes, re-render your Handsontable instance with the
render() method.
Access the HiddenColumns plugin instance
To access the HiddenColumns plugin instance, use the
getPlugin() method:
const plugin = hot.getPlugin('hiddenColumns');Hide a single column
To hide a single column, use the hideColumn() method:
const plugin = hot.getPlugin('hiddenColumns');
plugin.hideColumn(4);
// re-render your Handsontable instancehot.render();Hide multiple columns
To hide multiple columns:
- Either pass column indexes as arguments to the
hideColumn()method - Or pass an array of column indexes to the
hideColumns()method
const plugin = hot.getPlugin('hiddenColumns');
plugin.hideColumn(0, 4, 6);// orplugin.hideColumns([0, 4, 6]);
// re-render your Handsontable instancehot.render();Unhide a single column
To unhide a single column, use the showColumn() method:
const plugin = hot.getPlugin('hiddenColumns');
plugin.showColumn(4);
// re-render your Handsontable instancehot.render();Unhide multiple columns
To unhide multiple columns:
- Either pass column indexes as arguments to the
showColumn()method - Or pass an array of column indexes to the
showColumns()method
const plugin = hot.getPlugin('hiddenColumns');
plugin.showColumn(0, 4, 6);// orplugin.showColumns([0, 4, 6]);
// re-render your Handsontable instancehot.render();Related API reference
Configuration options
Hooks
Plugins