Column & Row Spanning
Description
Demo
Basic Usage
<script setup lang="ts">
import { Column, GridOption } from 'slickgrid-vue';
import { onBeforeMount, type Ref } from 'vue';
const gridOptions = ref<GridOption>();
const columnDefinitions: Ref<Column[]> = ref([]);
const dataset = ref<any[]>([]);
// 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 },
},
}
};
onBeforeMount(() => {
defineGrid();
});
function defineGrid() {
columnDefinitions.value = [ /*...*/ ];
gridOptions.value = {
enableCellNavigation: true,
enableCellRowSpan: true, // required for rowspan to work
dataView: {
globalItemMetadataProvider: {
getRowMetadata: (_item, row) => {
return this.metadata[row];
},
},
},
rowTopOffsetRenderType: 'top', // rowspan doesn't render well with 'transform', default is 'top'
};
}
</script>
<template>
<SlickgridVue
grid-id="grid1"
v-model:columns="columnDefinitions"
v-model:options="gridOptions"
v-model:data="dataset"
/>
</script>Last updated