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 3.9

Released on August 2, 2007 (build 1128).

Features

(F40) Multiple-days resource scheduling control (DayPilotScheduler)

This new control replaces DayPilotVertical in resources view. DayPilotVertical is still available in both Days and Resources views but DayPilotVertical/Resources view is now deprecated.

New features:

Showing multiple days

DayPilotVertical was able to show just a single day in Resources view. "Days" property now determines the number of days to be rendered (it was ignored in Resources view in DayPilotVertical).

Configurable scale

DayPilotVertical shows one cell per hour. With the new control, you can configure the cell size by setting CellDuration property (in minutes). CellDuration is not limited, you can choose to show:

  • 12 cells per hour (CellDuration="5")
  • 4 cells per hour (CellDuration="15")
  • 1 cell per hour (CellDuration="60")
  • 1 cell per day (CellDuration="1440")

Time header grouping

Time header now has two rows:

  • First row for cell groups (grouping cells by hour, day, week, or month)
  • Second row for individual cells

Improved rendering time

With the increased number of cells being rendered further performance improvements were necessary:

  • Rendering time for year view (by day, grouped by month; renders 2920 cells) was shortened from initial 15.4 s to 1.5 s (Internet Explorer 7).

New views

The combination of the properties mentioned above allows using full range of time views:

  • Day view
  • Week view
  • Month view
  • Year view

Rendering events

Rendering events will allow you to modify scheduler components:

  • BeforeCellRender - modification of IsBusiness/BackgroundColor properties for time cells
  • BeforeEventRender - modification of InnerHTML and other properties of event boxes
  • BeforeTimeHeaderRender - modification of InnerHTML and other properties of the time headers (X axis)
  • BeforeResHeaderRender - modification of InnerHTML and other properties of the resources headers (Y axis)

AJAX supported

The following actions are available to the user and handled either by JavaScript/PostBack/CallBack:

  • Event moving
  • Event resizing
  • Inline event editing
  • Time range selection
  • Refresh event (changing of StartDate, Days, CellDuration, CellGroupBy, and CellWidth properties)

(F43) Multiple custom data fields binding

In the previous versions, it was possible to bind a custom data source field to an event (using DataTagField property). The value of this field was available through the lifecycle of event:

  • In BeforeEventRender as e.Tag (useful for custom event background or HTML based on event type).
  • In JavaScript event handlers as e.tag() (useful for custom event handling of different event types).
  • In server-side event handlers as e.Tag.

The Tag field is now able to bind multiple fields from the datasource:

  • DataTagField property is renamed to DataTagFields
  • DataTagFields accepts a single field name or multiple field names (comma-separated)
  • The field values can be accessed using the field name:
    • client side: e.tag("field")
    • server side: e.Tag["field"] or e.Tag[0]

Custom data fields API comparison:

Old syntax (3.8-) New syntax (3.9+)
Binding the custom data source field(s) DataTagField="type" DataTagFields="type,color,image"
Accessing the custom fields values on the client side e.tag() e.tag("type")
The result of calling e.tag() on the client side Tag field value encodeURIComponent() encoded tag field values, joined using '&' character
Accessing the custom fields values on the server side e.Tag e.Tag["type"] or e.Tag[0]

(F47) Time range selection context menu (DayPilotCalendar & DayPilotScheduler)

It's now possible to handle the time range selection using a context menu on the client side.

New & changed properties

  • TimeRangeSelectedHandling: New "Hold" option was added. It causes the selection to stay after mouse release (the other options - JavaScript/PostBack/CallBack clear the selection immediately).
  • ContextMenuSelectionID: Specify the context menu ID (DayPilotMenu control) that will be available after right-clicking the selection.

Sample context menu declaration:

    <DayPilot:DayPilotMenu ID="DayPilotMenu1" runat="server">
        <DayPilot:MenuItem Action="JavaScript" JavaScript="dps1.timeRangeSelectedCallBack(e.start, e.end, e.resource); dps1.cleanSelection();"
            Text="Create new event (CallBack)" />
        <DayPilot:MenuItem Action="JavaScript" JavaScript="alert('Start: ' + e.start + '\nEnd: ' + e.end + '\nResource id: ' + e.resource);"
            Text="Show selection details" />
        <DayPilot:MenuItem Action="JavaScript" JavaScript="dps1.cleanSelection();"
            Text="Clean selection" />
    </DayPilot:DayPilotMenu>

There are three menu items:

  • "Create new event (CallBack)": Fires a TimeRangeSelected event on the server side using AJAX CallBack.
  • "Show selection details": Shows a dialog box with selection start, end, and resource id information using JavaScript.
  • "Clean selection": Cancels the selection using JavaScript.

(F34) Time range selecting (DayPilotVertical)

Implemented in DayPilotScheduler only.

Support in DayPilotVertical is on hold. Contact daypilot @ annpoint.com if you want this feature for DayPilotVertical.

(F35) Event deleting (DayPilotVertical)

Support in DayPilotVertical is on hold. Contact daypilot @ annpoint.com if you want this feature for DayPilotVertical.

This feature will be added to DayPilotScheduler in the next release (DayPilot Pro 4.0). 

See also F27 Event delete button ("X").

(F36) Event editing (DayPilotVertical)

Implemented in DayPilotScheduler only.

Support in DayPilotVertical is on hold. Contact daypilot @ annpoint.com if you want this feature for DayPilotVertical.

See also F09 Inline event editing.

(F41) Event selecting (DayPilotVertical)

Support in DayPilotVertical is on hold. Contact daypilot @ annpoint.com if you want this feature for DayPilotVertical.

This feature will be added to DayPilotScheduler in the next release (DayPilot Pro 4.0). 

See also F22 Calendar event selecting (DayPilotCalendar).

Other improvements & fixes

1. Event boxes can be turned off even for short events. The type DayPilotCalendar.UseEventBoxes is now UseBoxesEnum instead of bool. The following values are supported:

  • Always (default, replacing "true")
  • ShortEventsOnly (replacing "false", still renders event boxes for short events)
  • Never (never renders event boxes)

2. {0} replacement in DayPilotMenu item JavaScript actions fixed.

API changes

  • ColumnId property renamed to ResourceId in the following classes:
    • BeforeCellRenderEventArgs
    • EventClickEventArgs
    • EventDeleteEventArgs
    • EventMenuClickEventArgs
    • EventRightClickEventArgs
  • OldColumn/NewColumn properties renamed to OldResource/NewResource in the following class:
    • EventMoveEventArgs
  • DataTagField property renamed to DataTagFields.
  • Tag property type changed from string to TagCollection in the following classes:
    • BeforeEventRenderEventArgs
    • EventClickEventArgs
    • EventDeleteEventArgs
    • EventDeleteEventArgs
    • EventMenuClickEventArgs
    • EventMoveEventArgs
    • EventResizeEventArgs
    • EventRightClickEventArgs

 

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.