All client-side callback methods have an extra parameter (data) that will allow you to send additional information to the server.
Methods Affected
- commandCallBack(command, data)
- eventMoveCallBack(e, newStart, newEnd, data)
- eventResizeCallBack(e, newStart, newEnd, data)
- etc.
ASP.NET WebForms
Smart Object Handling
- You can send any kind of object (int, string, Date, array, object...).
- The JavaScript object is accessible using a string indexer (e.g. e.Data["property"]).
- You can access the full hierarchy without casting the individual levels (e.g. e.Data["property"]["item"]["subitem"]).
- The JavaScript array is accessible using a int indexer (e.g. e.Data[0]).
- You can convert the parameter value directly by casting in most cases (e.g. (string) e.Data will convert int value to string).
The "data" parameter will be translated into a JsonData class instance. JsonData is a polymorphic element that mimics an untyped JavaScript object.
Depending on the "data" content, it can be accessed in various ways:
- string: (string) e.Data
- integer: (int) e.Data
- Date: (DateTime) e.Data
- DayPilot.Date: (DateTime) e.Data
- array: e.Data[0]
- object with properties: e.Data["property"]
- object hierarchy: e.Data["item"]["subitem"]
Example 1 (string)
Client side:
var state = "on"; dpm.eventClickCallBack(e, state);
Server side:
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e) { string state = (string) e.Data; }
Example 2 (Date object)
Date object always sends its UTC value (not local time).
Client side:
var date = new Date(); dpm.eventClickCallBack(e, date);
Server side:
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e) { // be careful, this date doesn't correspond to the client // local time unless you are in +00 time zone DateTime date = (DateTime) e.Data; }
Example 3 (DayPilot.Date object)
DayPilot.Date object ignores the time zones and sends exactly what you supply. The constructor (new DayPilot.Date()) creates a new date using the current local time.
Client side:
var date = new DayPilot.Date(); dpm.eventClickCallBack(e, date);
Server side:
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e) { DateTime date = (DateTime) e.Data; }
Example 5 (array)
Client side:
var myArray = ['a', 'b', 'c']; dpm.eventClickCallBack(e, myArray);
Server side:
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e) { string a = (string) e.Data[0]; }
Example 4 (object)
You can send any object. It will be accessible as a Dictionary hieararchy.
Client side:
var o = {}; o.name = "name"; o.value = "value"; o.child = {}; o.child.name = "child name"; o.child.value = "child value"; dpm.eventClickCallBack(e, o);
Server side:
protected void DayPilotMonth1_EventClick(object sender, EventClickEventArgs e) { string childValue = (string) e.Data["child"]["value"]; }