我已完成以下代码以将重复条目保存到名为Bookings
.
SPSite site = new SPSite(SPContext.Current.Web.Url);
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Bookings"];
SPListItem recEvent = list.Items.Add();
try
{
recEvent["EventDate"] = startdate;//11/09/2012 08:00:00
recEvent["EndDate"] = enddate;//11/09/2012 08:30:00
recEvent["Booking_x0020_Title"] = Convert.ToString(txtTitle.Text);
recEvent["Title"] = Convert.ToString(txtTitle.Text);
recEvent["RecurrenceData"] = Recur_Xml.ToString();//ReccurrenceRule
recEvent["fRecurrence"] = "True";
recEvent["EventType"] = 1;
recEvent["UID"] = System.Guid.NewGuid();
recEvent["TimeZone"] = 0;
recEvent["Recurrence"] = -1;
recEvent["XMLTZone"] = "<timeZoneRule><standardBias>-330</standardBias><additionalDaylightBias>-60</additionalDaylightBias></timeZoneRule>";
recEvent.Update();
}
catch (Exception er)
{
}
如果我使用 Recurrence 规则保存以上内容,Repeat every 1 day for 10 occurences
则项目被正确保存并且当前事件视图显示所有实例,但是在获取 Recurring 条目时,我只得到 1 个结果,即在开始日期。以下是检索循环值的代码:
SPWeb oWeb = SPContext.Current.Web;
SPList oListBookings = oWeb.Lists.TryGetList("Bookings");
SPQuery oQueryBookings = new SPQuery();
string strQuery = "";
strQuery = @"<Where><DateRangesOverlap><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /><FieldRef Name='RecurrenceID' /><Value Type='DateTime'><Today /></Value></DateRangesOverlap></Where>";
oQueryBookings.ExpandRecurrence = true;
oQueryBookings.Query = strQuery;
oQueryBookings.CalendarDate = date;
SPListItemCollection oCollBookings = oListBookings.GetItems(oQueryBookings);
结果仅在oQueryBookings.CalendarDate = date;
等于时显示11/09/2012 08:00:00
,并且在此之后它不会返回任何日期项目,即使这些日期的实例存在,直到19/09/2012 08:00:00
如果我在保存项目时将其设置为,则查询将返回所有recEvent["EndDate"]
项目19/09/2012 08:00:00
。我希望在用户表单 ( ) 上将重复项目的 EndDate 设置为同一天,no user would want to calculate the last date of his occurence for recurring pattern with no end date
并且它应该在保存时自动计算。这怎么可能?
如果我使用 sharepoint UI 进行条目,则即使将其设置为同一天并且如果它是重复条目,也会自动计算此结束日期。
请指导我哪里出错了?是在保存时还是在获取记录时?还是因为EndDate
与 的日期相同StartDate
?请帮忙。