5

注意:此问题类似于现有的未回答问题( CAML OrderBy for SharePoint Recurring Calendar Event)。

如何使用Lists.asmx Web 服务来检索今天或以后发生的重复事件?

我在向Web 服务<CalendarDate>2019-06-25T15:55:04.108Z</CalendarDate>发送请求时提供了参数/_vti_bin/Lists.asmx,但我仍在接收过去的事件(如下面的屏幕截图所示)!

这是 XML 响应(屏幕截图)。请注意即使“CalendarDate”指定为“2019-06-25” ,事件日期在今天之前的情况:

在此处输入图像描述

这是随请求发送的 XML 有效负载:

<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>
  <soap:Body>
    <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'>
      <listName>{ my list GUID }</listName>
      <query>
        <Query>
          <OrderBy>
            <FieldRef Ascending='TRUE' Name='EventDate' />
          </OrderBy>
          <Where>
            <And>
              <Eq>
                <FieldRef Name="fRecurrence" />
                <Value Type="Boolean">1</Value>
              </Eq>
              <DateRangesOverlap>
                <FieldRef Name="EventDate" />
                <FieldRef Name="EndDate" />
                <FieldRef Name="RecurrenceID" />
                <Value Type='DateTime'>
                  <Year/>
                </Value>
              </DateRangesOverlap>
            </And>
          </Where>
        </Query>
      </query>
      <viewFields>
        <ViewFields>
          <FieldRef Name="Category" />
          <FieldRef Name="Location" />
        </ViewFields>
      </viewFields>
      <queryOptions>
        <QueryOptions>
          <ViewAttributes Scope="RecursiveAll" />
          <RecurrencePatternXMLVersion>v3</RecurrencePatternXMLVersion>
          <DateInUtc>TRUE</DateInUtc>
          <ExpandRecurrence>TRUE</ExpandRecurrence>
          <CalendarDate>2019-06-25T15:55:04.108Z</CalendarDate>
          <RecurrenceOrderBy>TRUE</RecurrenceOrderBy>
        </QueryOptions>
      </queryOptions>
      <rowLimit>20</rowLimit>
    </GetListItems>
  </soap:Body>
</soap:Envelope>

编辑:以下是上述查询未返回的事件示例。

在此处输入图像描述

4

1 回答 1

1

Year不尊重该CalendarDate属性 - 它返回从当前日期起一年内发生的先前事件和从当前日期起一年内发生的未来事件。

使用<Value Type='DateTime'><Now /></Value>inDateRangesOverlap和 removeCalendarDate检索今天或以后发生的重复事件

于 2019-07-06T20:37:00.373 回答