使用 Web 服务的 SharePoint 日历中的所有事件



我正在尝试获取日历中的所有列表项,这些列表项安排在给定日期的 30 天内。

            ndQueryOptions.InnerXml = "<ExpandRecurrence>TRUE</ExpandRecurrence>";
            ndQueryOptions.InnerXml += "<CalendarDate>" + calendarDate + "</CalendarDate>";
            ndQueryOptions.InnerXml += "<ViewAttributes Scope="RecursiveAll" />";
            ndQuery.InnerXml = @"<Where><DateRangesOverlap><FieldRef Name=""EventDate"" /><FieldRef Name=""EndDate"" /><FieldRef Name=""RecurrenceID"" /><Value Type=""DateTime""><Now /></Value></DateRangesOverlap></Where><OrderBy><FieldRef Name=""EventDate"" /></OrderBy>";

然后我调整数据以获取日期范围内的数据。

如果给定日期在特定范围内,它似乎有效。例如,我每周三和周五都有一个活动。如果现在是 6/5/2013,它将返回从现在到 9/13/2013 的数据。除这两天(较早的日期,如 2013 年 4 月 5 日或较晚的日期,如 2014 年 10 月 1 日(之外的任何查询(针对给定日期(都不会返回日期范围之间的事件。

更新:我将<Value Type=""DateTime""><Year /></Value><Now />更改为,结果更好,它确实返回了一些历史数据,但不是上一年,也不是明年。

更新:我遵循了 Douglas 的建议,它错过了 DateRangesOverlap 部分,因此它只为循环事件返回一个节点,而不是展开它们。所以我认为它不起作用。

更新:我找到了一篇解释日期范围重叠值类型的文章。这里确认<Year />只返回今天的数据,不适用于日历日期(我希望的开始日期(。根据那篇文章,<Month />更可靠。所以我无法进行日期范围搜索(至少不能在单个 Web 服务调用中搜索(。我将改用<Month />

您可以尝试以下查询字符串:

<Where><And><Leq><FieldRef Name='EventDate' /><Value Type='DateTime'>...</Value></Leq><Geq><FieldRef Name='EndDate' /><Value Type='DateTime'>...</Value></Geq></And></Where>

并指定开始日期和结束日期的值,格式如下2013-06-01T00:00:00

相关内容

  • 没有找到相关文章

最新更新