【发布时间】:2014-05-18 22:17:13
【问题描述】:
我的 C# 应用程序在 SharePoint 外部运行,因此我将 CSOM 与 Caml 查询结合使用。我想查找安排在一天内的所有日历事件,单次和重复。我收到所有与我选择的日期重叠的重复日历事件,即使它们在相关日期没有任何预定事件。单个事件被正确过滤并返回。如何将重复事件过滤为仅在给定日期触发的事件?使用任务列表而不是日历列表更容易吗?
var today = DateTime.UtcNow.ToString(@"yyyy-MM-ddT12:00:00Z");
var query = new CamlQuery {
ViewXml = @"<View>
<ViewFields>
<FieldRef Name='ID' />
<FieldRef Name='Title' />
<FieldRef Name='EventDate' />
<FieldRef Name='EndDate' />
<FieldRef Name='Description' />
<FieldRef Name='Category' />
<FieldRef Name='fRecurrence' />
<FieldRef Name='RecurrenceData' />
<FieldRef Name='fAllDayEvent' />
</ViewFields>
<Query>
<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate'></FieldRef>
<FieldRef Name='EndDate'></FieldRef>
<FieldRef Name='RecurrenceID'></FieldRef>
<Value Type='DateTime'><Today/></Value>
</DateRangesOverlap>
</Where>
<OrderBy><FieldRef Name='EventDate' /></OrderBy>
</Query>
<QueryOptions>
<CalendarDate>"+ today + @"</CalendarDate>
<RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>
<ExpandRecurrence>TRUE</ExpandRecurrence>
</QueryOptions>
</View>"
};
【问题讨论】:
-
这是典型的学校练习。我不使用 CAML,但 AFAIK 没有本地方法可以做到这一点。我的赌注是获得重叠的任务,然后计算/检查它是否在当前/选定的日期触发。
-
嗯,这不是为了学校,也不是练习,恐怕你对计算/检查过程是正确的。它似乎没有在任何地方记录。我还在寻找答案。
标签: sharepoint sharepoint-2010 sharepoint-2013 office365 csom