Having trouble getting help?
Contact Support
Contact Support
Copy and Paste records in Gantt
17 Feb 20224 minutes to read
You can copy and paste a record in the Gantt chart by using the addRecord
method and custom context menu
. It is also possible to copy and paste the parent record with multiple hierarchical child records on the required position.
@{
List<object> contextItems = new List<object> { "AutoFitAll", "AutoFit", "TaskInformation", "DeleteTask", "Save", "Cancel",
"SortAscending", "SortDescending", "Add", "DeleteDependency", "Convert"};
contextItems.Add(new { text= "Copy", target= ".e-content", id= "copy" });
contextItems.Add(new { text= "Paste", target= ".e-content", id= "paste" });
}
@Html.EJS().Gantt("Gantt").DataSource((IEnumerable<object>)ViewBag.DataSource).Height("450px").TaskFields(ts => ts.Id("TaskId").Name("TaskName"
).StartDate("StartDate").Duration("Duration").Progress("Progress").Dependency("Predecessor").Child("SubTasks")
).EnableContextMenu(true).EditSettings(es => es.AllowAdding(true).AllowEditing(true).AllowDeleting(true)
).ContextMenuItems(contextItems).ContextMenuOpen("ContextMenuOpen").ContextMenuClick("ContextMenuClick").Render()
<script>
var copiedRecord;
function ContextMenuOpen(args) {
if (args.type !== 'Header') {
if (copiedRecord) {
args.hideItems.push('Copy');
} else {
args.hideItems.push('Paste');
}
}
}
function ContextMenuClick(args) {
var gantt = document.getElementById("Gantt").ej2_instances[0];
if (args.item.id === 'copy') {
copiedRecord = args.rowData;
copiedRecord.taskData.TaskID = gantt.currentViewData.length + 1;
}
if (args.item.id === 'paste') {
gantt.addRecord(copiedRecord.taskData,'Below',args.rowData.index);
if(copiedRecord.hasChildRecords) {
addChildRecords(copiedRecord, args.rowData.index + 1);
}
copiedRecord = undefined;
}
}
function addChildRecords(record, index) {
for(var i=0; i<record.childRecords.length; i++) {
var childRecord = record.childRecords[i];
childRecord.taskData.TaskID = gantt.currentViewData.length + 1;
gantt.addRecord(childRecord.taskData,'Child',index);
if(childRecord.hasChildRecords) {
addChildRecords(childRecord, index + (i+1));
}
}
}
</script>
public IActionResult Index()
{
ViewBag.DataSource = ProjectNewData();
return View();
}