DayPilot - Open-Source Outlook-Like Calendar/Scheduling Control for ASP.NET
Try the online demo: AJAX-style event creating, moving, resizing, and deleting • Context menu • Day view • Work week view • Week view • Month view • Horizontal/vertical resources view • PostBack/AJAX/JavaScript event handling • Binding to XmlDataSource, SqlDataSource, DataTable, ArrayList • Custom event formatting • UpdatePanel compatibility

DayPilot Pro 4.0

Released on September 3, 2007 (build 1172).

Features

(F) DayPilotVertical control replaced by DayPilotScheduler

DayPilotScheduler started as an improved alternative to DayPilotVertical in Resources mode (it brought extended time range, date switching including time "zooming", grouped column headers, etc.). In DayPilot Pro 4.0, the Days mode was ported to DayPilotScheduler making DayPilotVertical obsolete. DayPilotVertical was removed from the package (all its features are available in DayPilotScheduler control).

(F10) All day events (DayPilotCalendar)

All day events appear in a new line that is be inserted between the days/column headers and the scrolling area.

Rendering rules:

  • If the time component of the DataStartField of DataEndField is specified it is shown in the event detail.
  • The date component of the date fields is used to determine the first and the last day of the event (event taking one day will have the same start and end date).

The start and end date values of the sample events:

Event 12:

  • start: "2007-09-03 00:00:00"
  • end: "2007-09-03 00:00:00"

Event 13:

  • start: "2007-09-03 22:36:00"
  • end: "2007-09-04 22:36:00"

All-day events API

DataAllDayField property: Specify the data source column that contains true for all-day events.

  • The following values are recognized as true (case insensitive): "1", "true", "t", "yes", "y".
  • The following values are recognized as false (case insensitive): "0", "false", "f", "no", "n".

ShowAllDayEvents property: Set to true to activate the row that shows all-day events.

AllDayEventHeight property: Set the height of the all-day event box in pixels.

Limitations

  • All-day events cannot be moved.
  • All-day events cannot be resized.
  • All-day events cannot be selected.
  • All-day events cannot be edited inline.

(F44) AJAX events refresh optimization (DayPilotCalendar & DayPilotScheduler)

The event updating code was completely redesigned. In previous versions, fully prepared HTML code was sent from the server. This solution was convenient but not too efficient. A lot of redundant HTML code (mostly style declarations) was sent back during updates.

DayPilot Pro 4.0 uses JSON (http://www.json.org) as the data format. Only the necessary event data are sent to the client and the HTML code is rendered on the client side using JavaScript. It was a great improvement for both controls but it will be especially useful for DayPilotScheduler that is used to show many events.

There are two kinds of AJAX updates (not including ASP.NET AJAX UpdatePanel partial PostBack):

  • Events update callback: Updates only the event data. This kind of update happens after EventClick, EventRightClick, EventMove, EventResize, EventDelete, EventMenuClick, and TimeRangeSelected event.
  • Refresh callback: Updates the event data and selected parts of the main table and its headers. This is necessary when switching the date (StartDate property) and visible time range (Days property).

Events update callback
Callback HTTP response Content-Length (in bytes) after event moving at http://www.daypilot.org/demo/Calendar/  and http://www.daypilot.org/demo/Scheduler/.

Version 3.9 Version 4.0 Improvement
DayPilotCalendar 23,744 B 12,806 B -46%
DayPilotScheduler 17,666 B 11,457 B -35%


Refresh callback
Callback HTTP response Content-Length (in bytes) after zooming at http://www.daypilot.org/demo/Scheduler/ and after "Next week" click at http://www.daypilot.org/demo/Calendar/.

Version 3.9 Version 4.0 Improvement
DayPilotCalendar 29,145 B 14,490 B -50%
DayPilotScheduler 36,419 B 28,997 B -20%

(F46) Days property changing using AJAX/Refresh event (DayPilotCalendar)

The refreshCallBack() client-side method was extended to support changing the Days property as well (in addition to StartDate).

DayPilotCalendar.Calendar.refreshCallBack(start, days)

start parameter accepts:

  • null (the current StartDate is passed to the server-side event handler)
  • Date object (that date is passed to the server-side event handler)
  • integer (current StartDate changed by the specified number of days is passed to the server-side event handler)

days parameter accepts:

  • null (the current Days value is passed to the server-side event handler)
  • integer (the specified number is passed to the server-side event handler)

Examples:

  • dpc1.refreshCallBack(7); // moves the view one week forward
  • dpc1.refreshCallBack(-7); // moves the view one week backward
  • dpc1.refreshCallBack(null, 1); // switches to Day view (without changing the StartDate)
  • dpc1.refreshCallBack(new Date(), 7); // switched StartDate to today and Days to 7

Fixes

  • Half days (CellDuration="720") colored by work day and not by work hour in DayPilotScheduler (IsBusiness).
  • Time selection context menu (Hold) is working for a single cell.
  • Right click on a time cell activates context menu (when handling set to Hold).

API changes

DayPilotScheduler

  • EventLeftBarColor property renamed to DurationBarColor.

DayPilotCalendar

  • EventLeftBarColor property renamed to DurationBarColor.
  • EventLeftBarVisible property renamed to DurationBarVisible.

Common

  • BeforeEventRenderEventArgs.EventLeftBarColor property renamed to DurationBarColor.

 

DayPilot Pro is an advanced DayPilot edition. You can check a thumbnail overview of the most interesting features. There is also an online demo with all the features working (including the AJAX features). If you want to test the design-time support and API you can download a fully functional trial version. And if you like it, you can buy a full version with source code and 12 months of upgrades and support (with a 30-days money back guarantee).

DayPilot Lite is a do-it-yourself open-source edition of DayPilot. Although it misses some DayPilot Pro features, there are thousands of developers using it to build calendar, personal scheduling, and resource booking applications.

Questions or suggestions? Try DayPilot forums or contact us directly.