문제

SpQuery와 DataRangeSoverlap에 문제가 있습니다.

내 캘린더에는 오늘 일어나지 않는 세 가지 사건이 있습니다. spquery.query에서 나는이 사건을 제외하고 싶습니다. 불행히도 모든 이벤트가 반환됩니다.텍스트 열의 필터가 포함되어 있지만 DataRangeSoverLap은 모든 필터링을 수행하지 않습니다.다음은 내 코드가 있습니다 :

SPListCollection oLists = oSiteCollection.AllWebs["MYSITE"].Lists;
String res = "";
SPQuery spquery = new SPQuery();
string datasel = SPUtility.CreateISO8601DateTimeFromSystemDateTime(caldata.SelectedDate.Date);

spquery.Query = "<Where><And><DateRangesOverlap><FieldRef Name=\"EventDate\" /><FieldRef Name=\"EndDate\" /><FieldRef Name=\"RecurrenceID\" /><Value Type=\"DateTime\" IncludeTimeValue=\"True\">Today</Value></DateRangesOverlap><Or><Contains><FieldRef Name=\"Title\" /><Value Type=\"Text\">" + tbnome.Text + "</Value></Contains></Or></And></Where>";
spquery.ExpandRecurrence = true;
spquery.RowLimit = 100;


foreach (SPList l in oLists)  {
  String title =  l.Title;
  if (title.IndexOf("MyCalendar")==0)  {

    SPListItemCollection items = l.GetItems(spquery);

    foreach (SPListItem item in items)
    {
      res += "<li>" + item["Title"]  + " date1 " + item["Start Time"] + " date2 " + item["End Time"] + "</li>";
    }
  }
}
res = "<ul>"+res+"</ul>";
.

도움이 되었습니까?

해결책

나는

를 썼다
<Value Type=\"DateTime\" IncludeTimeValue=\"True\">Today</Value>
.

대신

<Value Type=\"DateTime\" IncludeTimeValue=\"True\"><Today /></Value>
.

다른 팁

불행히도, CAML 날짜는 SharePoint에서 매우 흡사합니다.시간에 따라 비교하지 않으며 DaterangesOverlap이 반복되는 이벤트에만 작동한다고 생각합니다.되풀이되거나 단일 인스턴스 이벤트가 표시되지 않아야 할 이벤트가 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 sharepoint.stackexchange
scroll top