Log In
Home
Support
Demos
Documentation
Blogs
Training
Webinars
[Expand]General Information
[Collapse]WinForms Controls
  Prerequisites
 [Expand]What's Installed
 [Expand]Build an Application
 [Collapse]Controls and Libraries
  [Expand]Forms and User Controls
  [Expand]Messages, Notifications and Dialogs
  [Expand]Editors and Simple Controls
  [Expand]Ribbon, Bars and Menu
  [Expand]Application UI Manager
  [Expand]Docking Library
  [Expand]Data Grid
  [Expand]Vertical Grid
  [Expand]Pivot Grid
  [Expand]Tree List
  [Expand]Chart Control
  [Expand]Diagrams
  [Expand]Gauges
  [Expand]Map Control
  [Collapse]Scheduler
   [Expand]Product Information
   [Expand]Getting Started
   [Collapse]Fundamentals
    [Expand]Scheduler Elements
    [Collapse]Scheduler Structure
      Logical Layers
      Object Interaction
      Data-Related Events
    [Expand]Appointments
     Resources for Appointments
    [Expand]Views
     Pop-up Menus
    [Expand]Data Binding
    [Expand]Mappings
    [Expand]Supported Formats
    [Expand]Services
    [Expand]Time Zones
     Printing
    [Expand]Scheduler Reporting
   [Expand]Visual Elements
   [Expand]Design-Time Features
   [Expand]Examples
   [Expand]End-User Capabilities
   [Expand]Member Tables
  [Expand]Spreadsheet
  [Expand]Rich Text Editor
  [Expand]Spell Checker
  [Expand]Form Layout Managers
  [Expand]Navigation Controls
  [Expand]Printing-Exporting
  [Expand]PDF Viewer
   Reporting
  [Expand]Snap
  [Expand]TreeMap Control
 [Expand]Common Features
  Get More Help
 [Expand]API Reference
[Expand]ASP.NET Controls and MVC Extensions
[Expand]ASP.NET Bootstrap Controls
[Expand]ASP.NET Core Bootstrap Controls
[Expand]WPF Controls
[Expand]Xamarin Controls
[Expand]Windows 10 App Controls
[Expand]Document Server
[Expand]Reporting
[Expand]Report Server
[Expand]Dashboard
[Expand]eXpressApp Framework
[Expand]CodeRush
[Expand]CodeRush Classic
[Expand]Cross-Platform Core Libraries
[Expand]Tools and Utilities
 End-User Documentation

Object Interaction

This topic extends the previous Logical Layers article and provides information on objects interactions at different layers.

The interactions of the various objects defined in the Scheduler are illustrated in the following picture:

Expanded Storage Layer objects - Control Layer objects

A single PersistentObject can produce several views, for example, when an appointment occupies more than one day and is displayed split apart, or when an appointment does not belong to a specific resource, and is displayed for each resource individually.

Every AppointmentViewInfo object belongs to a single appointment, which is accessible via the AppointmentViewInfo.Appointment property. You should use this property whenever it is necessary to get the related appointment for the visual object. This usually happens within CustomDraw event handlers, such as when you process mouse clicks to determine which object was clicked (hit testing) and so on.

Expanded Data Layer objects - Storage Layer objects

PersistentObjects at the storage layer are created from information provided by data objects in the data layer. The storage loads data according to the specified requirements.

A PersistentObject is created for each data object obtained from the data source. Not every PersistentObject so constructed is included into the storage collection, however: recurrence exceptions are created along with other persistent objects and not stored in the AppointmentBaseCollection, but are accessible via the Appointment.GetExceptions method of the Appointment.RecurrencePattern appointment.

If a PersistentObject is created from a data object, it contains a link to its data source record (the row). The corresponding object at the Data layer can be obtained via the IPersistentObject.GetSourceObject method. The scope of this method is limited to persistent objects originating from data objects and not for the appointment occurrences and newly created appointments.

There are certain scenarios in which persistent objects are created by replicating existing instances. It may be by the end-user interactively editing the PersistentObject's visual representation, or by them dragging and dropping an appointment to create a new one. These objects are not linked to any data layer item and the IPersistentObject.GetSourceObject method is inapplicable.

The following storage layer methods are useful for direct manipulation with linked objects at the Data layer:

How would you rate this topic?​​​​​​​