【问题标题】:Issue while Fetching recurring items from Sharepoint Calendar从 Sharepoint 日历中获取重复项目时出现问题
【发布时间】:2012-09-12 07:12:19
【问题描述】:

我想获取特定日期的所有项目。以编程方式将条目添加为重复事件,现在我需要根据用户选择的日期在每一天获取重复事件的所有实例。

例如:我在 9 月 12 日创建了 3 个重复条目,并在 9 月 21 日结束,所有三个条目都有不同的 TIME 和单独的 ROOM NAME

我想根据所选日期在 12 日、13 日、14 日等到 21 日获取所有项目。

以下是我正在使用的代码,用于在选定的日期获取所有条目,bt 我在这里遇到的问题是,只有当我选择日期为 12thSept 时查询才会返回项目 并且对于所有其他日期,即从 13 日到 21 日,查询不会返回任何结果

    SPQuery oQueryBookings = new SPQuery();

                            string strQuery = "";
                            oQueryBookings.ExpandRecurrence = true;
                            //oQueryBookings.Query = strQuery;
                            oQueryBookings.CalendarDate = date.Date;
                            SPListItemCollection oCollBookings = null;
                            strQuery = "<Where><And><DateRangesOverlap><FieldRef Name='EventDate' />" +
                            "<FieldRef Name='EndDate' />" +
                                       "<FieldRef Name='RecurrenceID'/>" +
                                       "<Value Type='DateTime'>" +
                                       "<Today />" +
                                       "</Value>" +
                                      "</DateRangesOverlap>" +
                                      "<Eq><FieldRef Name='Room' /><Value Type='Lookup'>" + room + "</Value></Eq>" +
                                      "</And></Where>";

oQueryBookings.ViewFields = string.Concat("<FieldRef Name='Title' />" +
                    "<FieldRef Name='EventDate' />" +
                    "<FieldRef Name='EndDate' />" +
                    "<FieldRef Name='Location' />" +
                    "<FieldRef Name='Description' />" +
                    "<FieldRef Name='fRecurrence' />" +
                    "<FieldRef Name='RecurrenceData' />" +
                    "<FieldRef Name='fAllDayEvent' />" +
                    "<FieldRef Name='LinkTitle'/>" +
                    "<FieldRef Name='Room'/>");

                            oQueryBookings.Query = strQuery;
                            oCollBookings = list.GetItems(oQueryBookings);
                            if (oCollBookings.Count > 0)
                            {
                               //Code Here
                            }

【问题讨论】:

    标签: c# sharepoint-2010 calendar caml recurring-events


    【解决方案1】:

    问题在于保存项目,EventDateEndDate 被保存为同一天。

    【讨论】:

      【解决方案2】:

      问题是您使用的是&lt;Today/&gt;。您已经在查询中设置了 CalendarDate 属性,因此我建议您使用 &lt;Week/&gt;&lt;Month/&gt; 来获取其余项目。

      【讨论】:

      • 我想要它用于&lt;Today/&gt;,并且获取重复项目的查询是正确的。问题在于保存项目,EventDateEndDate 被保存为与上述情况相同的日期,两者都是12Sep2012,因此在第 13 天及以后的日子里,&lt;DateRangesOverlap&gt; 无法正常工作。
      猜你喜欢
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多