Headers in Vue Treegrid component
16 Mar 202310 minutes to read
Header text
By default, column header title is displayed from column field
value. To override the default header title, you have to define the headerText
value.
<template>
<div id="app">
<ejs-treegrid :dataSource="data" childMapping='subtasks' :treeColumnIndex='1' height='315px'>
<e-columns>
<e-column field='taskID' headerText='Task ID' width=90 textAlign='Right'></e-column>
<e-column field='taskName' headerText='Task Name' width=180></e-column>
<e-column field='startDate' headerText='Start Date' width=90 format="yMd" textAlign='Right'></e-column>
<e-column field='duration' headerText='Duration' width=80 textAlign='Right'></e-column>
</e-columns>
</ejs-treegrid>
</div>
</template>
<script>
import Vue from "vue";
import { TreeGridPlugin } from "@syncfusion/ej2-vue-treegrid";
import { sampleData } from "./datasource.js";
Vue.use(TreeGridPlugin);
export default {
data() {
return {
data: sampleData,
};
},
}
</script>
- If both the
field
andheaderText
are not defined in the column, the column renders with “empty” header text.
Header template
You can customize the header element by using the headerTemplate
property.
<template>
<div id="app">
<ejs-treegrid :dataSource="data" childMapping='subtasks' :treeColumnIndex='0' height='315px'>
<e-columns>
<e-column field='taskName' :headerTemplate='projectName' width=180></e-column>
<e-column field='startDate' :headerTemplate='dateTemplate' format="yMd" textAlign='Right'></e-column>
<e-column field='duration' :headerTemplate='durationTemplate' textAlign='Right'></e-column>
<e-column field='progress' :headerTemplate='progressTemplate' textAlign='Right'></e-column>
</e-columns>
</ejs-treegrid>
</div>
</template>
<script>
import Vue from "vue";
import { TreeGridPlugin } from "@syncfusion/ej2-vue-treegrid";
import { headerData } from "./datasource.js";
Vue.use(TreeGridPlugin);
export default {
data() {
return {
data: headerData,
projectName: function () {
return { template : Vue.component('columnTemplate',{
template: `<div class="image">
<img :src="image" width=20 height=20 class="e-image"/> Task Name
</div>`,
data: function() {
return {
data: {}
}
},
computed: {
image: function() {
return "Taskname.png";
}
}
})}
},
dateTemplate: function () {
return { template : Vue.component('columnTemplate',{
template: `<div class="image">
<img :src="image" width=20 height=20 class="e-image"/> Start Date
</div>`,
data: function() {
return {
data: {}
}
},
computed: {
image: function() {
return "Startname.png";
}
}
})}
},
durationTemplate: function () {
return { template : Vue.component('columnTemplate',{
template: `<div class="image">
<img :src="image" width=20 height=20 class="e-image"/> Duration
</div>`,
data: function() {
return {
data: {}
}
},
computed: {
image: function() {
return "Duration.png";
}
}
})}
},
progressTemplate: function () {
return { template : Vue.component('columnTemplate',{
template: `<div class="image">
<img :src="image" width=20 height=20 class="e-image"/> Progress
</div>`,
data: function() {
return {
data: {}
}
},
computed: {
image: function() {
return "progress.png" ;
}
}
})}
}
};
},
}
</script>