首先要搞清楚日历事件的各种类型,参考文章:

http://sharepoint.microsoft.com/blog/Pages/BlogPost.aspx?PageType=4&ListId={72C1C85B-1D2D-4A4A-90DE-CA74A7808184}&pID=761

Type Description fRecurrence fAllDayEvent EventType
Single event

An event created with the All Day Event and

Recurrence checkboxes unselected.

FALSE FALSE 0
All-day event

An event created with the All Day Event

checkbox selected.

FALSE TRUE 0
Recurring event

An event created with the Recurrence checkbox selected.

Has a recurrence icon in the All Events view.

Appears as a single master event on the All Events view,

but as recurring instances on the Current Events and

Calendar views.

TRUE FALSE 1
Recurring all-day event

Same as above, but with the All Day Event checkbox

selected at creation time.

TRUE TRUE 1
Recurrence exception

Created by editing an instance of a recurring event.

Has a strikethrough recurrence icon in the All Events view.

TRUE FALSE 4
All-day recurrence exception

Same as above, but created by editing an instance of an

all-day recurring event.

TRUE TRUE 4

Deleted instance of a

recurring event

Created by deleting a instance of a recurring event.

Title is prefixed with “Deleted:” in the All Events view,

and is hidden in the Current Events and Calendar views.

TRUE FALSE 3

Deleted instance of an

all-day recurring event

Same as above, but created by deleting an instance of

an all-day recurring event.

TRUE TRUE 3

  重复事件

Field Value for single event Value for recurring event
EventDate Start date and time

Start date and time set for the recurring event when it was created,

which may be an earlier date than the first instance of the recurring event.

EndDate End date and time

End date and time for the last instance of the recurring event.

For recurring events with no end date, this is a computed date

several years in the future.

Duration

The time in seconds between EventDate

and EndDate.

The duration in seconds of an individual instance of the recurring event.

  特例事件和已删除事件

Field Value for exception or deleted instance
MasterSeriesItemID

The ID of the recurring event from which this exception

or deleted instance was made.

RecurrenceID

The date and time of the instance of the recurring event which this exception

or deleted instance takes the place of.

  重复事件的重复模式

Recurrence type RecurrenceData field value
Daily every 1 days, no end date

<recurrence>

  <rule>

    <firstDayOfWeek>su</firstDayOfWeek>

    <repeat><daily dayFrequency="1" /></repeat>

    <repeatForever>FALSE</repeatForever>

  </rule>

</recurrence>

Weekly every Monday, Tuesday,

and Wednesday, end by 5/31/2007

<recurrence>

  <rule>

    <firstDayOfWeek>su</firstDayOfWeek>

    <repeat>

      <weekly mo="TRUE" tu="TRUE" we="TRUE" weekFrequency="1" />

    </repeat>

    <windowEnd>2007-05-31T22:00:00Z</windowEnd>

  </rule>

</recurrence>

Monthly the third Wednesday of every 2 months,

no end date

<recurrence>

  <rule>

    <firstDayOfWeek>su</firstDayOfWeek>

    <repeat>

      <monthlyByDay we="TRUE" weekdayOfMonth="third" monthFrequency="2" />

    </repeat>

    <repeatForever>FALSE</repeatForever>

  </rule>

</recurrence>

Yearly every May 18, end after 10 instances

<recurrence>

  <rule>

    <firstDayOfWeek>su</firstDayOfWeek>

    <repeat><yearly yearFrequency="1" month="5" day="18" /></repeat>

    <repeatInstances>10</repeatInstances>

  </rule>

</recurrence>

虽然事件的重复模式是以XML格式储存,但在使用ClientObjectModel查询时,并不需要手动去解析XML。

使用SPQuery对象查询时,需指定以下属性:

ExpandRecurrence -- 是否展开重复事件

CalendarDate -- 指定查询的参考时间

查询每日事件

             using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb())
{
SPList calendar = web.GetList(listUrl);
SPQuery caml = new SPQuery();
caml.Query = @"<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate' />;
<FieldRef Name='EndDate' />
<FieldRef Name='RecurrenceID' />
<Value Type='DateTime'><Today /></Value>
</DateRangesOverlap>
</Where>"; caml.ExpandRecurrence = true;
caml.CalendarDate = DateTime.Now; return calendar.GetItems(caml);
}
}

查询每周事件

                     caml.Query = @"<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate' />;
<FieldRef Name='EndDate' />
<FieldRef Name='RecurrenceID' />
<Value Type='DateTime'><Week /></Value>
</DateRangesOverlap>
</Where>";

查询每月事件

                     caml.Query = @"<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate' />;
<FieldRef Name='EndDate' />
<FieldRef Name='RecurrenceID' />
<Value Type='DateTime'><Month /></Value>
</DateRangesOverlap>
</Where>";

查询每年事件

                     caml.Query = @"<Where>
<DateRangesOverlap>
<FieldRef Name='EventDate' />;
<FieldRef Name='EndDate' />
<FieldRef Name='RecurrenceID' />
<Value Type='DateTime'><Year /></Value>
</DateRangesOverlap>
</Where>";

[SharePoint 2007/2010]Query SharePoint Calendar Event的更多相关文章

  1. [Beginning SharePoint Designer 2010]探索SharePoint Designer

    本章概要: 1.SharePoint Designer是如何进入到微软的工具集中去的 2.SharePoint Designer的基本特性 3.如何创建SharePoint站点 4.如何打开一个已经存 ...

  2. 更改SharePoint 2007/2010/2013 Web 应用程序端口号

    之前创建的Web应用程序端口为80,因为其他需要要将端口更改为85,下面是具体步骤: 第一步:更改IIS绑定. 打开IIS服务管理器,右击需要更改的站点,选择编辑绑定. 在打开的网站绑定窗口,选择端口 ...

  3. WIN中SharePoint Server 2010 入门安装部署详解

    目前流行的原始安装文件基本都是这样的:Windows Server 2008 R2+SQL Server 2008R2+SharePoint Server 2010     这个初始环境原本也无可厚非 ...

  4. SharePoint Server 2010 中的基本任务

    SharePoint Foundation 和 SharePoint Server 概述 SharePoint Foundation 2010 是一项用于 SharePoint 网站的基础技术,它可以 ...

  5. SharePoint Srver 2010 资源汇总

    转:http://bbs.winos.cn/thread-93681-1-1.html Microsoft SharePoint Server 2010 是适用于企业和网络的业务协作平台,可以帮助您通 ...

  6. 【SharePoint 2010】SharePoint 2010开发方面的课堂中整理有关问题

    SharePoint 2010开发方面的课堂中整理有关问题陈希章 ares@xizhang.com1. 对于SharePoint的体系结构不甚清楚,觉得有点乱了解了就不会觉得乱了,请理解1) 场服务 ...

  7. SharePoint Server 2010安装图解

    SharePoint Server 2010作为MOSS 2007的升级版本,自从2009年底发布Beta版本以来就备受关注,网络上已经出现了很多相关的文章,其中也不乏中文的信息. 最近SharePo ...

  8. SharePoint 2013/2010 中的日历重合 (Calendars Overlay)

    本文介绍 SharePoint 2013/2010 中的日历重合 (Calendars Overlay). 日历重合 (Calendars Overlay)的用途就是将 不多于10个日历或日历视图聚集 ...

  9. 【SharePoint 2010】将Sharepoint Server 2010部署到WINDOWS 7

    1.部署-安装环境: 在这里先说明一下:2007的版本中我们只能装在WINDOWS 2003 SERVER 上,这种限制在2010被彻底打破了.我们可以将它安装在VISTA/WINDOWS 7/SER ...

随机推荐

  1. 解析 Linux 内核可装载模块的版本检查机制

    转自:http://www.ibm.com/developerworks/cn/linux/l-cn-kernelmodules/ 为保持 Linux 内核的稳定与可持续发展,内核在发展过程中引进了可 ...

  2. JDK各个版本的新特性jdk1.5-jdk8

    JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一 ...

  3. 解决SVN更新代码是出现previous operation has not finished; run cleanup if it was interrupted这个错误

    解决方法:清空svn的队列 1.下载sqlite3.exe 2.找到你项目的.svn文件,查看是否存在wc.db   (查看.svn文件需要打开显示隐藏文件夹) 3.将sqlite3.exe放到.sv ...

  4. B站开源ijkplayer 等多个项目

    弹幕视频网 Bilibili(B 站)近日在 GitHub 网站上建立了开源工作组(BOSTF),用以分享与维护自己的开源项目,其中包括 DanmakuFlameMaster(燃烧吧!烈焰弹幕使)与 ...

  5. win10打开组策略提示命名空间已经被定义

    http://www.xitongcity.com/jiaocheng/win10jc_content_3629.html 最近有win10系统用户升级到10532版本时,无法打开组策略,弹出提示“命 ...

  6. WPF下的仿QQ图片查看器

    本例中的大图模式使用图片控件展示,监听控件的鼠标滚轮事件和移动事件,缩略图和鹰眼模式采用装饰器对象IndicatorObject和Canvas布局.百分比使用一个定时器,根据图片的放大倍数计算具体的数 ...

  7. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  8. hibernate 的SessionFactory的getCurrentSession 与 openSession() 的区别

    1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会. 2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而ope ...

  9. Windows OS上安装运行Apache Kafka教程

    Windows OS上安装运行Apache Kafka教程 下面是分步指南,教你如何在Windows OS上安装运行Apache Zookeeper和Apache Kafka. 简介 本文讲述了如何在 ...

  10. 00 EPLAN安装问题

    问题: EPLAN 安装结束后,无法创建项目,每次创建均会弹出提示框:内部错误 解决方案: 运行 Services.msc 禁用EPLAN Client Service  设置EPLAN使用管理员模式 ...