从Sharepoint日历中获取重复项目时发出问题

时间:2012-09-12 07:12:19

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

我想要获取特定日期的所有商品。以编程方式将条目添加为定期事件,现在我需要按照用户选择的日期在每一天获取周期性事件的所有实例。

例如:我已经在12月9日制作了3个重复参赛作品,并在21月9日结束,所有三个都有不同的TIME和一个单独的ROOM NAME Calendar

我希望在12日,13日,14日等所有项目中按照所选日期获取至21日。

以下是我正在处理的代码,用于获取所选日期的所有条目,我在这里遇到的问题是,只有当我选择日期为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
                            }

2 个答案:

答案 0 :(得分:1)

问题在于保存项目EventDate&amp; EndDate在同一天保存。

答案 1 :(得分:0)

问题是你正在使用<Today/>。您已经在查询中设置了CalendarDate属性,因此我建议您使用<Week/><Month/>来获取剩余的项目。