Event deleting can be implemented using one of the following ways (or their combination):
built-in delete icon
custom active area icon
JavaScript Scheduler
1. Built-In Delete Icon
![]()
The JavaScript Scheduler component includes a built-in delete icon.
The delete icon is not enabled by default. To enable it, use
eventDeleteHandling: "Update". See also the eventDeleteHandling property in the API documentation.Clicking the icon will fire the onEventDelete event. In this event handler, you can cancel the default action by calling
args.preventDefault().After the default action, the Scheduler will fire the onEventDeleted event handler.
<div id="dp"></div>
<script>
const dp = new DayPilot.Scheduler("dp");
dp.eventDeleteHandling = "Update";
dp.onEventDelete = args => {
if (!confirm("Do you really want to delete this event?") {
args.preventDefault();
}
};
dp.onEventDeleted = args => {
// API call to delete the event on the server side
// ...
dp.message("Deleted");
};
dp.init();
</script>2. Context Menu

The following example defines a context menu with a "Delete" item that removes the event from the Scheduler using the events.remove() method.
<div id="dp"></div>
<script>
const dp = new DayPilot.Scheduler("dp");
dp.contextMenu = new DayPilot.Menu({
items: [
{text:"Delete", onClick: args => { const e = args.source; dp.events.remove(e); } }
]
});
// ...
dp.init();
</script>3. Active Area
This example will add an active area that will delete the event on click/tap.
The icon will be permanently visible on touch devices. On other devices, it will be visible on hover. (
visibility: "TouchVisible")It uses the CSS from the default theme (
scheduler_default) to display the delete icon. (cssClass: "scheduler_default_event_delete")Adding
action: "None"ensures that the click/tap event will not bubble to the event box.
<div id="dp"></div>
<script>
const dp = new DayPilot.Scheduler("dp");
// ...
dp.onBeforeEventRender = args => {
args.data.areas = [
{
right: 5,
top: 5,
width: 17,
height: 17,
cssClass: "scheduler_default_event_delete",
action: "None",
visibility: "TouchVisible",
onClick: args => { dp.events.remove(args.source); }
}
];
};
dp.init();
</script>ASP.NET WebForms
1. Built-In Delete Icon
Enable event deleting:
<DayPilot:DayPilotScheduler
ID="DayPilotScheduler1"
runat="server"
...
EventDeleteHandling="CallBack"
/>Handle EventDelete event:
protected void DayPilotScheduler1_EventDelete(object sender, EventDeleteEventArgs e)
{
DeleteEvent(e.Id);
setDataSourceAndBind();
DayPilotScheduler1.UpdateWithMessage("Event deleted.");
}2. Context Menu
Create a context menu:
<DayPilot:DayPilotMenu ID="DayPilotMenu1" runat="server" CssClassPrefix="menu_default">
<DayPilot:MenuItem Text="Open" Action="JavaScript" JavaScript="editEvent(e.value());" />
<DayPilot:MenuItem Text="Delete" Action="Callback" Command="Delete" />
</DayPilot:DayPilotMenu>Link it to the Scheduler:
<DayPilot:DayPilotScheduler
ID="DayPilotScheduler1"
runat="server"
...
ContextMenuID="DayPilotMenu1"
/>
The items with Action = "CallBack" will fire EventMenuClick event on the server side:
protected void DayPilotScheduler1_EventMenuClick(object sender, DayPilot.Web.Ui.Events.EventMenuClickEventArgs e)
{
// delete the event in the database
setDataSourceAndBind();
DayPilotScheduler1.Update();
}3. Active Area
You can also use active areas.
protected void DayPilotScheduler1_BeforeEventRender(object sender, BeforeEventRenderEventArgs e)
{
e.Areas.Add(new Area().Width(17).Bottom(9).Right(2).Top(3).CssClass("event_action_delete").JavaScript("dps.eventDeleteCallBack(e);"));
}These sample classes (event_action_delete and event_action_menu) are defined in Themes/areas.css (plus Themes/areas directory) so don't forget to include it.
Clicking this active area will fire EventDelete handler on the server side using a callback.
You can make the icon permanently visible by adding .Visible() call
protected void DayPilotScheduler1_BeforeEventRender(object sender, BeforeEventRenderEventArgs e)
{
e.Areas.Add(new Area().Width(17).Bottom(9).Right(2).Top(3).CssClass("event_action_delete").JavaScript("dps.eventDeleteCallBack(e);").Visible());
}ASP.NET MVC
1. Built-In Delete Icon
Enable event deleting using EventDeleteHandling property:
@Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
...
EventDeleteHandling = EventDeleteHandlingType.CallBack,
})Clicking the icon will fire EventDelete handler on the server side:
protected override void OnEventDelete(EventDeleteArgs e)
{
new EventManager(Controller).EventDelete(e.Id);
UpdateWithMessage("Event deleted.");
}2. Context Menu
You need to define the menu (from Demo/Views/Scheduler/ContextMenu.aspx):
@Html.DayPilotMenu("menu", new DayPilotMenuConfig {
CssClassPrefix = "menu_default",
Items = new DayPilot.Web.Mvc.MenuItemCollection
{
new DayPilot.Web.Mvc.MenuItem { Text = "Open", Action = MenuItemAction.JavaScript, JavaScript = "editEvent(e.value());"},
new DayPilot.Web.Mvc.MenuItem { Text = "Delete", Action = MenuItemAction.CallBack, Command = "Delete"}
}
})Link it to the Scheduler:
@Html.DayPilotScheduler("dps", new DayPilotSchedulerConfig {
...
ContextMenu = "menu",The items with Action = MenuItemAction.CallBack will fire OnEventMenuClick on the server side:
protected override void OnEventMenuClick(EventMenuClickArgs e)
{
switch (e.Command)
{
case "Delete":
new EventManager(Controller).EventDelete(e.Id);
Update();
break;
}
}3. Active Area
You can also use active areas. Add the active area to the event using OnBeforeEventRender.
protected override void OnBeforeEventRender(BeforeEventRenderArgs e)
{
e.Areas.Add(new Area().Width(17).Bottom(9).Right(2).Top(3).CssClass("event_action_delete").JavaScript("dps.eventDeleteCallBack(e);"));
}These sample classes (event_action_delete and event_action_menu) are defined in Themes/areas.css (plus Themes/areas directory) so don't forget to include it.
Availability
Availability of this feature in DayPilot editions:
| Lite | Pro | |
|---|---|---|
| DayPilot for JavaScript | ||
| DayPilot for ASP.NET WebForms | ||
| DayPilot for ASP.NET MVC | ||
| DayPilot for Java |
DayPilot