2012-09-12 102 views
1

我想在特定日期获取所有项目。以编程方式将条目添加为循环事件,现在我需要按照用户选择的日期每天获取循环事件的所有实例。从Sharepoint日历获取重复项目时出现问题

如:我已经12thSept取得3个重复条目,并与具有不同TIME和独立ROOM NAME Calendar

我要取12日,13日,14日等所有项目的所有三个上21stSept结束根据所选日期在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 
          } 

回答

1

问题出在保存项目时,EventDate & EndDate被保存为同一天。

0

问题是您正在使用<Today/>。您已经在查询中设置了CalendarDate属性,所以我建议您使用<Week/><Month/>来代替其他项目。

+0

我想要'',并且提取重复项目的查询是正确的。问题出在保存该项目时,'EventDate'' EndDate'被保存为与上述情况相同的一天,都是'12Sep2012',因此在第13天和之后''DateRangesOverlap>'没有工作。 – Ishan