
The resources (rows) with child nodes have special behavior.
You can prevent the parent resources from being used for scheduling.
You can highlight the parents using CSS. The parent node cells are marked with
*_cellparentclass (CssOnly mode).You can load the children dynamically.
JavaScript
<div id="scheduler"></div>
<script>
const scheduler = new DayPilot.Scheduler("scheduler", {
treePreventParentUsage: true,
// ...
});
scheduler.init();
</script>
API: treeEnabled, treePreventParentUsage.
In the examples, Rooms is a category node and Room A and Room B remain bookable children. treePreventParentUsage prevents scheduling in the parent row.
The framework examples use DayPilot Pro. For installation, see the Angular, React or Vue Scheduler guide.
Angular
import {Component} from "@angular/core";
import {DayPilot, DayPilotModule} from "daypilot-pro-angular";
@Component({
selector: "app-scheduler-example",
standalone: true,
imports: [DayPilotModule],
template: `
<daypilot-scheduler [config]="config"></daypilot-scheduler>
`
})
export class SchedulerExampleComponent {
config: DayPilot.SchedulerConfig = {
startDate: "2026-11-01",
days: 30,
scale: "Day",
timeHeaders: [{groupBy: "Month"}, {groupBy: "Day", format: "d"}],
resources: [{id: "G", name: "Rooms", expanded: true, children: [{id: "A", name: "Room A"}, {id: "B", name: "Room B"}]}],
events: [{id: 1, text: "Planning", resource: "A", start: "2026-11-03", end: "2026-11-06"}, {id: 2, text: "Delivery", resource: "B", start: "2026-11-08", end: "2026-11-11"}],
treeEnabled: true,
treePreventParentUsage: true
};
}
React
import React from "react";
import {DayPilot, DayPilotScheduler} from "daypilot-pro-react";
export default function SchedulerExample() {
return <div>
<DayPilotScheduler
startDate={"2026-11-01"}
days={30}
scale={"Day"}
timeHeaders={[{groupBy: "Month"}, {groupBy: "Day", format: "d"}]}
resources={[{id: "G", name: "Rooms", expanded: true, children: [{id: "A", name: "Room A"}, {id: "B", name: "Room B"}]}]}
events={[{id: 1, text: "Planning", resource: "A", start: "2026-11-03", end: "2026-11-06"}, {id: 2, text: "Delivery", resource: "B", start: "2026-11-08", end: "2026-11-11"}]}
treeEnabled={true}
treePreventParentUsage={true}
/>
</div>;
}
Vue
<script setup>
import {DayPilot, DayPilotScheduler} from "daypilot-pro-vue";
const startDate = "2026-11-01";
const days = 30;
const scale = "Day";
const timeHeaders = [{groupBy: "Month"}, {groupBy: "Day", format: "d"}];
const resources = [{id: "G", name: "Rooms", expanded: true, children: [{id: "A", name: "Room A"}, {id: "B", name: "Room B"}]}];
const events = [{id: 1, text: "Planning", resource: "A", start: "2026-11-03", end: "2026-11-06"}, {id: 2, text: "Delivery", resource: "B", start: "2026-11-08", end: "2026-11-11"}];
const treeEnabled = true;
const treePreventParentUsage = true;
</script>
<template>
<div>
<DayPilotScheduler
:startDate="startDate"
:days="days"
:scale="scale"
:timeHeaders="timeHeaders"
:resources="resources"
:events="events"
:treeEnabled="treeEnabled"
:treePreventParentUsage="treePreventParentUsage"
/>
</div>
</template>
ASP.NET WebForms
Demo
Scheduling events in parent tree nodes can be disabled using TreePreventParentUsage = true.
See Also
Restaurant Table Reservation Tutorial (ASP.NET, C#, VB.NET)
ASP.NET MVC
@Html.DayPilotScheduler("dps_parents", new DayPilotSchedulerConfig {
BackendUrl = ResolveUrl("~/Scheduler/Backend"),
...
TreeEnabled = true,
TreePreventParentUsage = true
})Demo
Availability
Availability of this feature in DayPilot editions:
| Product | Lite | Pro |
|---|---|---|
| DayPilot for JavaScript | ||
| DayPilot for ASP.NET WebForms | ||
| DayPilot for ASP.NET MVC | ||
| DayPilot for Java |
DayPilot