在SchedulerControl中显示单个重复约会(具有例外)的出现次数

时间:2012-07-12 21:10:34

标签: c# winforms devexpress

在我当前的应用程序中,需要用户“过滤”到特定的重复约会,并且仅在调度程序控件中显示该特定约会模式的出现。我试图通过使用单独的SchedulerControl创建一个新表单来实现这一目的,并且只添加用户试图查看的单个约会:

public OccurrenceCalcForm(Appointment appointment)

{
    InitializeComponent();

    OccurrenceSchedulerControl.Storage.Appointments.CustomFieldMappings.Add(new DevExpress.XtraScheduler.AppointmentCustomFieldMapping("Inactive", "Inactive"));
    OccurrenceSchedulerControl.Storage.Appointments.CustomFieldMappings.Add(new DevExpress.XtraScheduler.AppointmentCustomFieldMapping("StandingOrderKEY", "StandingOrderKEY"));
    OccurrenceSchedulerControl.Storage.Appointments.Add(appointment);


    OccurrenceSchedulerControl.Refresh();
}

但难点在于约会类型为ChangedOccurrence的例外情况,其中这些单独事件的特定属性与模式不同,它们不会在控件中显示,如下面的屏幕截图所示(实际上有更改的例外情况)这个每日约会在24日和26日有不同的开始日期,但没有显示):

Daily appointment with exceptions on 24th and 26th

可以使用GetExceptions()方法从约会引用中正确计算和获取这两个异常,但重要的是它们也会在控件中显示给用户,而不是根本不显示。是否有方法让SchedulerControl显示其存储中单个定期约会的所有事件(包括例外)?

欢迎任何其他方法建议。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

您可以通过处理CustomDrawAppointmentBackgroundCustomDrawAppointment事件来显示它们。执行此操作的DevExpress provides sample code(忽略将已删除的事件转换为更改的事件的那部分)。