Column & Row Spanning
Description
Demo
Basic Usage
import { Column, GridOption } from 'slickgrid-react';
import { useState } from 'react';
const Example: React.FC = () => {
const [dataset, setDataset] = useState<any[]>([]);
const [columns, setColumns] = useState<Column[]>([]);
const [options, setOptions] = useState<GridOption>();
const reactGridRef = useRef();
// metadata can be dynamic too, it doesn't have to be preset
const metadata: ItemMetadata | Record<number, ItemMetadata> = {
0: {
columns: {
1: { rowspan: 2 },
2: { colspan: 2 },
10: { colspan: 3, rowspan: 10 },
13: { colspan: 2 },
17: { colspan: 2, rowspan: 2 },
},
}
};
useEffect(() => defineGrid(), []);
function reactGridReady(reactGrid: SlickgridReactInstance) {
reactGridRef.current = reactGrid;
}
function defineGrid() {
setColumns([ /*...*/ ]);
setOptions({
enableCellNavigation: true,
enableCellRowSpan: true, // required for rowspan to work
dataView: {
globalItemMetadataProvider: {
getRowMetadata: (_item, row) => {
return metadata[row];
},
},
},
rowTopOffsetRenderType: 'top', // rowspan doesn't render well with 'transform', default is 'top'
});
}
}Last updated