Domanda

Ho un problema con Spquery e DatarangesOverLap.

Nel mio calendario ci sono tre eventi che non succedono oggi. In Spquery.Query voglio escludere questi eventi. Sfortunatamente tutti gli eventi vengono restituiti.Il filtro contiene per una colonna di testo funziona bene ma il datarangesoverlap non fa alcun filtraggio.Ecco il mio codice:

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>";
.

È stato utile?

Soluzione

Ho scritto

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

invece di

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

Altri suggerimenti

Sfortunatamente, la Caml Date Round praticamente fa schifo in SharePoint.Non sarà paragonato in base al tempo e penso che il Daterangesoverlap funzioni solo per eventi ricorrenti.Sono gli eventi che ti aspetti di non essere mostrati eventi ricorrenti o singoli di istanza?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top