Sharepoint 使用RESTAPI在页面上显示日历视图

Sharepoint 使用RESTAPI在页面上显示日历视图,sharepoint,Sharepoint,我想使用rest api在页面上显示calendar.aspx视图,而不使用服务器代码或Web部件。 有没有办法做到这一点。您可以使用Jquery和fullcalendar.io插件使用客户端脚本来显示日历视图 不需要服务器端代码,您可以将所有数据存储在sharepoint的现有日历中。仅在渲染时,我们将使用Jquery完整日历插件。 下面的函数retreive将从sharepoint日历列表中获取数据 function Retreive() { var listUrl = "../_vti_b

我想使用rest api在页面上显示calendar.aspx视图,而不使用服务器代码或Web部件。
有没有办法做到这一点。

您可以使用Jquery和fullcalendar.io插件使用客户端脚本来显示日历视图

不需要服务器端代码,您可以将所有数据存储在sharepoint的现有日历中。仅在渲染时,我们将使用Jquery完整日历插件。 下面的函数retreive将从sharepoint日历列表中获取数据

function Retreive() {
var listUrl = "../_vti_bin/ListData.svc/UpcomingEvents";
$.ajax({
    url: listUrl,
    type: "GET",
    data: {
        $select: "Title,Description,StartTime,EndTime,AllDayEvent,Recurrence,Id"
    },
    headers: {
        accept: "application/json;odata=verbose"
    },
    success: function(data) {
        $.each(data.d.results, function(i) {
            currObj = this;
            var fADE = currObj.AllDayEvent;
            if (fADE != null) {
                if (fADE == 0) {
                    thisADE = false
                } else thisADE = true;
            }
            var thisID = currObj.Id;
            var thisTitle = currObj.Title;
            var thisRecurrence = currObj.Recurrence;
            var thisDesc = currObj.Description;
            var x = new Date(parseInt(currObj.StartTime.substr(6)));
            var y = new Date(parseInt(currObj.EndTime.substr(6)));
            ele.push({
                title: currObj.Title,
                id: currObj.Id,
                start: x,
                description: currObj.Description,
                end: y,
                allDay: thisADE,
            });
        });
        BindCalendar();
    }
});}
函数bindcalendar将把数组“ele”中的数据加载到日历插件中

function BindCalendar() {
var calendarioDiv = $('#calendar');
var fullCalendar = calendarioDiv.fullCalendar({
    events: ele,
    error: function() {
        alert('Error');
    },
    editable: false,
    firstDay: 0,
    monthNames: ['JANUARY', 'FEBRUARY',
        'MARCH', 'APRIL', 'MAY',
        'JUNE', 'JULY', 'AUGUST', 'SEPTEMBER',
        'OCTOBER', 'NOVEMBER', 'DECEMBER'
    ],
    dayNames: ['Sunday', 'Monday', 'Tuesday',
        'Wednesday', 'Thursday', 'Friday', 'Saturday'
    ],
    dayNamesShort: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
    allDay: true
});}
见参考条款-

谢谢您的解决方案。但这样做也会返回来自不同日历的覆盖事件。也可以在没有第三方js参考的情况下执行相同操作。否这将仅从日历“UpcomingEvents”列表返回事件。但是,如果要从多个日历返回事件,可以对每个日历执行多个异步ajax调用,并将其存储在“ele”数组中,该数组将是绑定到jquery日历的单个数据源。是的,这是正确的,但我的网站集有多个网站和子网站。所以我没有关于日历的位置以及名称和URL的信息。使用overlaid,它将在一个主日历中显示所有事件。因此,如果可以使用一些rest api或jquery在页面上显示此master calendar.aspx视图。如果您可以在配置列表中存储日历名称和url,并且可以在母版页中使用它来检索事件,这将非常有用。但是,如果有多个站点和子站点,则可能需要考虑递归地列出所有子站点,并获得日历类型的列表。谢谢您的建议。