Skip to main content

DevExpress v24.2 Update — Your Feedback Matters

Our What's New in v24.2 webpage includes product-specific surveys. Your response to our survey questions will help us measure product satisfaction for features released in this major update and help us refine our plans for our next major release.

Take the survey Not interested

How to: Filter Appointments

  • 2 minutes to read

#FilterAppointment event

The following example demonstrates how to filter the appointments shown within a Scheduler Control according to some condition. For this the SchedulerDataStorage.FilterAppointment event is used. The code below demonstrates how to hide all tentative appointments (those whose status is set to AppointmentStatusType.Tentative).

using DevExpress.XtraScheduler;
// ...

private void schedulerDataStorage1_FilterAppointment(object sender, PersistentObjectCancelEventArgs e) {
   // Filter all tentative appointments.
   e.Cancel = ((Appointment)e.Object).StatusId == 1;
}

#Filter Control

You can use the FilterControl to provide the end-user with a flexible tool to build complex filter criteria.

Suppose your appointment has a custom field CustomFieldPrice, mapped as follows:

using DevExpress.XtraScheduler;
//...

AppointmentCustomFieldMapping customPriceMapping = 
    new AppointmentCustomFieldMapping("CustomFieldPrice", "Price", FieldValueType.Decimal);
schedulerStorage1.Appointments.CustomFieldMappings.Add(customPriceMapping);

Place the FilterControl onto the form. Name it filterControlForAppointments. Specify the SchedulerStorage.Appointments storage as the source control of the FilterControl using the FilterControl.SourceControl property.

At runtime, you’ll be able to construct a complex criterion, as illustrated in the following picture:

FilterControlText

The filter string, obtained via the FilterControl.FilterString property, looks as follows:

[AllDay] = True And [Subject] Like ‘R%’ And [Description] Like ‘%Check%’ And [Start] Between(#2009-12-13#, #2009-12-25#) And [CustomFieldPrice] >= 10.00m Or [Status] = 3 And [Label] = 7

This filter leaves the Scheduler appointments with Status equal to ‘Out Of Office’ labeled ‘Need Preparation’, and also, all-day appointments which start between 13 and 25 December, 2009, having a subject starting with ‘R’, containing string “Check” in the description, and priced equal to or higher than 10.

To apply this criterion to the scheduler appointment storage, use this code:

schedulerControl.Storage.Appointments.Filter = filterControlForAppointments.FilterString;