Un esempio in JavaScript per recuperare da un calendario SharePoint 2010 tutti gli eventi, compresi quelli ricorrenti:

JavaScript

var sgart = sgart || {};

sgart.getCalendarItems = function(webUrl, calendarGuid, rowLimit, debug) {
  var wsUrl = webUrl + "_vti_bin/Lists.asmx";
  var xmlSoap = "<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>" + calendarGuid + "</listName>" +
        "<query>" +
          "<Query>" +
            "<Where>" +
              "<DateRangesOverlap>" +
                "<FieldRef Name=\"EventDate\" />" +
                "<FieldRef Name=\"EndDate\" />" +
                "<FieldRef Name=\"RecurrenceID\" />" +
                "<Value Type='DateTime'><Year/></Value>" +
              "</DateRangesOverlap>" +
            "</Where>" +
          "</Query>" +
        "</query>" +
        "<rowLimit>" + rowLimit + "</rowLimit>" +
        "<queryOptions>" +
          "<QueryOptions>" +
            "<ExpandRecurrence>TRUE</ExpandRecurrence>" +
          "</QueryOptions>" +
        "</queryOptions>" +
      "</GetListItems>" +
    "</soap:Body>" +
  "</soap:Envelope>";
  
  $.ajax({
    url: wsUrl,
    type: "POST",
    contentType: "text/xml; charset=\"utf-8\"",
    dataType: "xml",
    data: xmlSoap,
    complete: function (data, status) {
      var result = [];
      if (status === "success") {
        var root = $(data.responseText);
        root.find("listitems").children().children().each(function () {
          var item = $(this);
          var ids= item.attr("ows_UniqueId").split(";")[0];
          var id = ids[0];
          var guid = ids[1];
          var recurrence = item.attr("ows_fRecurrence") === '1' ? true : false;

          result.push({
            startTime: item.attr("ows_EventDate"),
            endTime: item.attr("ows_EndDate"),
            title: item.attr("ows_Title"),
            recurrence: recurrence,
            description: item.attr("ows_Description"),
            guid: guid,
            "id": id
          });
        });
      }
      //solo per debug
      if (debug === true) {
        for (var i = 0; i < result.length; i++) {
          var item = result[i];
          console.log(i + ") " + item.startTime + " - " + item.title);
        }
        console.log(result);  // visualizzo l'oggetto con i risultati
      }

      //TODO: inserire qui la logica di visualizzazione/gestione degli items ritornati

      return result;
    }
  });
};
per recuperare gli items utilizza il web service SAOP Lists.asmx che ritorna un XML con gli eventi.
In JavaScript sia con il client object model, sia con le chiamate REST, non è possibile avere gli eventi ricorrenti.

La funzione può essere richiamata passando la url relativa del web in cui si trova il calendario (webUrl) e il guid della lista (calendarGuid):

JavaScript

sgart.getCalendarItems("/", "{CC7E271C-9B1F-4072-ADFE-53FA542BADED}", 2, true);
inoltre è possibile indicare quanti elementi ritornare (rowLimit) e se visualizzare nella console del browser gli elementi ritornati (debug).
Tags:
Client Object Model10 JavaScript184 JQuery33 JSOM2 SharePoint498 SharePoint 2010224 SharePoint 2013137
Potrebbe interessarti anche: