C# 展开定期和日历日期:不为定期事件自动计算事件结束日期

C# 展开定期和日历日期:不为定期事件自动计算事件结束日期,c#,sharepoint-2010,calendar,recurring,C#,Sharepoint 2010,Calendar,Recurring,我已经完成了以下代码,将一个定期条目保存到名为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

我已经完成了以下代码,将一个定期条目保存到名为
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)
        {

        }
仅当
oQueryBookings.CalendarDate=date时,才会显示结果
等于
11/09/2012 08:00:00
,并且它不会返回此后日期的任何项目,即使在
19/09/2012 08:00:00

如果在保存项目时将
recEvent[“EndDate”]
设置为
19/09/2012 08:00:00
,则查询将返回所有项目。我希望定期项目的结束日期在用户表单上设置为“同一天”(
没有用户希望为没有结束日期的定期模式计算其发生的最后日期),并且应在保存时自动计算。这是怎么可能的

如果我使用sharepoint UI创建条目,则此结束日期将自动计算,即使它设置为同一天,并且是定期条目

请告诉我哪里出了问题?是在保存记录时还是在提取记录时?还是因为
EndDate
StartDate
的日期相同?请提供帮助。

检查“频繁发生”和“重复发生”字段。您可以尝试使用“1”而不是“True”,我不确定“重复性”=-1。你能澄清一下这是什么意思吗

还有一个主意。您可以使用SharePoint网站创建重复事件,以测试代码的第二部分


正如我所知,对于无结束日期的重复事件,“结束日期”是未来几年的计算日期。因此,如果您的代码正确,要处理重复事件,您应该通过追加年份来更新“EndDate”。

谢谢<代码>结束日期
适用于每2个月后仅在周日发生且在10次发生后结束的事件!我怎样才能知道这样一个活动的结束日期?我的问题不是关于并没有结束日期的事件,我可以在未来附加很多年,而且效果很好。我的问题只是在某些情况下重复事件。确定。对于重复实例,应检查RecurrenceData。xml值应该包含一个带有多个实例的“repeatinstances”标记。例如,如果希望事件在10次出现后结束,xml值应如下所示:su 10请检查“monthlyByDay”标记中的属性。
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);