Pregunta

Tengo un problema con Spquery and Datarangesoverlap.

En mi calendario hay tres eventos que hoy no suceden. En Spquery.Query quiero excluir estos eventos. Lamentablemente, todos los eventos son devueltos.El filtro Contiene para una columna de texto funciona bien, pero el DATARANGESOVERLAP no hace ningún filtrado.Aquí está mi código:

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

¿Fue útil?

Solución

He escribido

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

en lugar de

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

Otros consejos

Desafortunadamente, la cita de la cámara de Caml prácticamente apesta en SharePoint.No se comparará según el tiempo y creo que el Daterangesoverlap solo funciona para eventos recurrentes.¿Son los eventos que espera que no se muestre eventos recurrentes o de instancia única?

Licenciado bajo: CC-BY-SA con atribución
scroll top