Data Binding, Export and Printing
To fully appreciate the design flexibility of ExpressScheduler, you need to see what's happening inside - how events are represented internally, how they can be transferred to a scheduler from different sources and how they can be exported to external storage medias. The great news for developers is that we don't ask you to change how you manage your data within ExpressScheduler - each event is a record within the appropriate data storage container and these records are managed by our ExpressDataController which is used by all data-aware controls engineered by Developer Express. Of course, you have alternatives when it comes to data binding. The control's contents can be entirely data-aware (from events to resources) or you can use unbound data for manual data manipulation. In addition, we provide several exporting options supporting today’s most popular data formats so you can move data from the scheduler to a different application with ease.
Data Exchange with Microsoft Outlook
With the ExpressScheduler, you can easily transfer or synchronize data bidirectionally between Microsoft Oulook's Calendar and your ExpressScheduler enabled application. (It doesn't matter which version of Outlook you use.) To enable this capability, you simply have to call the cxSchedulerExportToOutlook and cxSchedulerImportFromOutlook (or cxSchedulerSynchronizeStorageWithOutlook and cxSchedulerSynchronizeOutlookWithStorage) procedures. Note that these procedures allow you to customize the data exchange processes by using callback functions that can filter the events exchanged or perform any custom actions related to the moving of individual events. This control over the data exchange process eliminates the need to worry about data incompatibilities - such as exporting plans for multiple resources - since you can filter the events by a particular resource or any other criteria.

Binding to a Database
The scheduler can store its data in a database so that any other data-aware control can access this information. To do so, you should use the TcxSchedulerDBStorage component that serves as the bridge between a data source and a scheduler control. The list below describes the main features related to data binding:
- The dataset you link to the scheduler should contain a number of fields representing the events' start, end times, captions, etc. These fields specify the event's representation and layout and are automatically updated and modified in response to end-user actions.
-
You don't necessarily have to provide all the fields listed in the TcxSchedulerDBStorage.FieldNames property. The only fields you need to specify are those that control the event's layout so that all end-user actions can be processed correctly.
- You can provide a separate dataset containing resource descriptions so that the number and content of resources depends on the number and content of records in that dataset.
-
The ExpressScheduler allows you to optimize performance when retrieving data from storage. In smart refresh mode, it only reloads the updated values into the scheduler's view, rather than all the data.
-
In smart refresh mode the ExpressScheduler doesn't reload data, if changes to the bound data source are made concurrently by another control. You can manually update the scheduler, if required.

Unbound Data
If you don't need to store your data in a database, you can bind a scheduler to a TcxSchedulerStorage component that stores unbound event and resource data. The key things to know about this data binding approach are:
- All fields required for event functionality are automatically created and maintained.
- The data entered into the scheduler can be saved to a file or a stream and restored later.

Binding Custom Fields to an Event
The default data fields used for event management are not a limit to the data an event can hold. You can additionally specify any number of fields you need via the storage's CustomFields property. If you specify custom fields, you can allow your end-users to modify field values via custom dialogs, or initialize these fields in code. With this approach you don't have to create any additional data storage to maintain extended data with individual events. More importantly, you don't have to provide any additional code to save/restore that data - it will be saved/restored with the rest of the data automatically!

Data Export
As well as other controls produced by Developer Express, the ExpressScheduler supports data export to the following formats:

Printing
You can print the ExpressScheduler's content using the ExpressPrinting System library (sold separately). To learn more about our printing library and see the ExpressScheduler's print preview, visit the ExpressPrinting System page.

|