我实际上使用的是 Telerik kendo 调度程序,而不是 iCal 文件,但我需要以调度程序议程列表以外的方式显示出现列表,并且调度对象和 ical 对象之间的映射相似,所以我想我会使用 DDay。
创建一个 iCalendar 对象并加载到计划表中,我的代码可以在其中构建发生列表并过滤掉从系列中删除的事件。我遇到问题的地方是系列中某个事件被修改的地方。
通过在创建系列中的修改事件时将数据存储在数据库中的方式,它会创建一个新记录并使用原始记录的事件 ID填充RecurrenceId字段。
看起来很简单,只需匹配 id 字段,对吧?问题是 DDay iCal 中的RecurrenceId是 IDateTime 而不是 int。我不知道如何处理它,因为我们有很多同时开始/结束的事件,所以抓住原始开始/结束似乎不可行。除非我误解了实际发生的事情。
如果修改事件是事件中主事件的唯一修改事件,我确实找到了一种处理修改事件的复杂方法。但是这种方法不考虑可能包括主事件和主事件的多个修改事件的发生序列。
我想一种可能的解决方案是从调度程序表中构建 2 个列表,其中一个列表仅修改了重复事件和其他主事件。
然后,当我处理事件时,我会检查每个事件以查看它是否存在于修改后的事件列表中。如果是这样,请相应地更新事件。然而,这似乎是一个非常笨拙的解决方案。即使它会解决所有修改后的场景。我想我在图书馆里遗漏了一些可以处理这个问题的东西。
一如既往,可以在此问题上提供的任何帮助将不胜感激。
谢谢,克里斯