Examples
Example 1: Event move handler
MVC View
@Html.DayPilotCalendar("dpc", new DayPilotCalendarConfig { BackendUrl = ResolveUrl("~/Calendar/Backend"), EventMoveHandling = EventMoveHandlingType.CallBack })
MVC Controller
[HandleError] public class CalendarController : Controller { public ActionResult Backend() { return new Dpc().CallBack(this); } public class Dpc : DayPilotCalendar { protected override void OnEventMove(DayPilot.Web.Mvc.Events.Calendar.EventMoveArgs e) { new EventManager(Controller).EventMove(e.Id, e.NewStart, e.NewEnd); Update(); } protected override void OnFinish() { // only load the data if an update was requested by an Update() call if (UpdateType == CallBackUpdateType.None) { return; } // this select is a really bad example, no where clause Events = new EventManager(Controller).Data.AsEnumerable(); DataStartField = "start"; DataEndField = "end"; DataTextField = "name"; DataIdField = "id"; // optional DataAllDayField = "allday"; DataTagFields = "id, name"; } } }
Example 2: Using Command event to refresh the events
See also CommandCallBack.
MVC View
<div><a href="dpc.commandCallBack('refresh')">Refresh</a></div> @Html.DayPilotCalendar("dpc", new DayPilotCalendarConfig { BackendUrl = ResolveUrl("~/Calendar/Backend") })
MVC Controller
[HandleError] public class CalendarController : Controller { public ActionResult Backend() { return new Dpc().CallBack(this); } public class Dpc : DayPilotCalendar { protected override void OnCommand(CommandArgs e) { switch (e.Command) { case "refresh": Update(CallBackUpdateType.EventsOnly); break; } } protected override void OnFinish() { // only load the data if an update was requested by an Update() call if (UpdateType == CallBackUpdateType.None) { return; } // this select is a really bad example, no where clause Events = new EventManager(Controller).Data.AsEnumerable(); DataStartField = "start"; DataEndField = "end"; DataTextField = "name"; DataIdField = "id"; // optional DataResourceField = "resource"; DataAllDayField = "allday"; DataTagFields = "id, name"; } } }
ASP.NET MVC
You can handle events by overriding the appropriate OnSomething method in your custom class that derives from the DayPilotCalendar class.
There are several types event types:
Rendering events
Use them to customize the appearance, especially the HTML of Calendar elements.
- OnBeforeEventRender() - customize events
- OnBeforeCellRender() - customize background time cells
- OnBeforeHeaderRender() - customize column headers (top row)
- OnBeforeTimeHeaderRender() - customize time headers (left column)
Initialization event
This event is called only during the initial page load, right after the Calendar is displayed.
- OnInit()
User action events
These events handle the user actions. By default, all user actions are disabled. You can enable them by setting the event handling to CallBack (e.g. EventClickHandling=CallBack).
- OnEventClick - called when the user clicks an event
- OnEventRightClick - called when the user right-clicks an event
- OnEventDoubleClick - called when the user double-clicks an event
- OnEventMove - called when the user moves an event
- OnEventResize - called when the user resizes an event
- OnEventDelete - called when the user deletes an event using the [x] icon in the upper-left corner
- OnEventBubble - called when the bubble HTML is requested after the user hovers an event
- OnEventEdit - called when the user ends the inline event editing mode by pressing <enter>
- OnEventMenuClick - called when the user clicks a context menu item with CallBack handling
- OnTimeRangeSelected - called when the user selected a time range
- OnTimeRangeDoubleClick - called when the user double-clicks a time cell (or selection)
- OnTimeRangeMenuClick - called wehn the user clicks a context menu item with CallBack handling
- OnCommand() - a special event that can be invoked by calling commandCallBack() method on the client side
Lifecycle events
There are two special events that are called during every CallBack:
- OnPrepare() - called before every user action event
- OnFinish() - called after every user action event