You can render any components in a Tree Grid column using the template property.
Initialize the column template for your custom component. The template property renders the custom component.
In the following sample, the DropDownList is rendered in the Priority column.
var dropData = ["Normal", "Low", "High", "Critical", "Breaker"];
var treegrid = new ej.treegrid.TreeGrid({
dataSource: window.projectData,
idMapping: "TaskID",
parentIdMapping: "parentID",
treeColumnIndex: 1,
queryCellInfo: dropdown,
height: 273,
columns: [
{ field: "TaskID", headerText: "Task ID", textAlign: "Right", width: 70 },
{ field: "TaskName", headerText: "Task Name", width: 100 },
{ field: "StartDate", headerText: "Start Date", textAlign: "Right", width: 100,
format: { skeleton: "yMd", type: "date" } },
{ field: "EndDate", headerText: "End Date", textAlign: "Right", width: 90,
format: { skeleton: "yMd", type: "date" } },
{ field: "Duration", headerText: "Duration", textAlign: "Right", width: 90 },
{ headerText: "Priority", width: 90, template: `<input type="text" tabindex="1" id='ddlelement' />` }
]
});
treegrid.appendTo("#TreeGrid");
function dropdown(args) {
var ele = args.cell.querySelector("#ddlelement");
var drop = new ej.dropdowns.DropDownList({
dataSource: dropData,
value: args.data["Priority"],
popupHeight: 150,
popupWidth: 150,
change: valueChange
});
drop.appendTo(ele);
}
function valueChange(args) {
/** Event will trigger when you have change the value in dropdown column */
alert(args.value);
}
#container {
visibility: hidden;
}
#loader {
color: #008cff;
font-family: 'Helvetica Neue','calibiri';
font-size: 14px;
height: 40px;
left: 45%;
position: absolute;
top: 45%;
width: 30%;
}
<!DOCTYPE html><html lang="en"><head>
<title>EJ2 Grid</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Typescript Grid Control">
<meta name="author" content="Syncfusion">
<link href="index.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-base/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-grids/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-treegrid/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-buttons/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-popups/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-navigations/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-dropdowns/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-lists/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-inputs/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-calendars/styles/material.css" rel="stylesheet">
<link href="//cdn.syncfusion.com/ej2/21.2.3/ej2-splitbuttons/styles/material.css" rel="stylesheet">
<script src="https://cdn.syncfusion.com/ej2/21.2.3/dist/ej2.min.js" type="text/javascript"></script>
<script src="es5-datasource.js" type="text/javascript"></script>
</head>
<body>
<div id="container">
<div id="TreeGrid"></div>
</div>
<script>
var ele = document.getElementById('container');
if(ele) {
ele.style.visibility = "visible";
}
</script>
<script src="index.js" type="text/javascript"></script>
</body></html>
You can refer to our
JavaScript Tree Grid
feature tour page for its groundbreaking feature representations. You can also explore our JavaScript Tree Grid exampleJavaScript Tree Grid example
to knows how to present and manipulate data.