我使用SharePoint 2013列表作为事件源。没有什么特别之处,因为它被用作数据表。
我使用Client Javascript API并通过函数executeQueryAsync (从列表中)获取项
以下是代码
var clientContext = new SP.ClientContext.get_current();
oWebsite = clientContext.get_web();
var oList = oWebsite.get_lists().getByTitle('EventsList');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml("<View><ViewFields><FieldRefName='ID' /><FieldRef Name='Title' /><FieldRef Name='EventDate' /><FieldRef Name='EndDate' /></ViewFields><Query><Where><And><Geq><FieldRef Name='EventDate'/><Value Type='DateTime'>" + startDate + "</Value></Geq><Leq><FieldRef Name='EndDate'/><Value Type='DateTime'>" + endDate + "</Value></Leq></And></Where></Query></View>");
this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
我面临的问题是,只有当AsyncQuery完成时,complete函数才会触发。onQuerySucceeded函数如下所示
function onQuerySucceeded(sender, args) {
var listItemInfo = '';
var listItemEnumerator = collListItem.getEnumerator();
eventSourceArray.push({ title: 'Test Event', start: '2017-02-08' });
while (listItemEnumerator.moveNext()) {
alert(listItemEnumerator);
var oListItem = listItemEnumerator.get_current();
listItemInfo += '\nID: ' + oListItem.get_id() +
alert(oListItem.get_item('Title'));
}
}
“警告”仅用于测试目的。如果我将警报放入此函数中,它会显示出来。但是,推送到源中的事件不会显示。我正在寻找一种方法来刷新日历一旦查询完成。
更新:我想要显示的事件在用作事件源的eventSourceArray中异步填充(参见下面的代码)
jQuery('#calendrier').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
defaultDate: today,
lang: 'fr-ca',
buttonIcons: true,
weekNumbers: false,
editable: false,
eventLimit: true,
events: eventSourceArray
});
现在,我正在寻找一种方法来重新加载日历,或者即使页面已经加载,也可以在Array中显示添加的事件。
更新:
我试过了,但没有效果。https://fullcalendar.io/docs/event_data/addEventSource/
jQuery('#calendrier').fullCalendar('refetchEventSources', eventSourceArray);
我添加了一个警报来显示数组的长度(eventSourceArray),所有项都在那里)
更新:
尝试使用我的数组重置事件
events: eventSourceArray
然后调用refetchEvents https://fullcalendar.io/docs/event_data/refetchEvents/
jQuery('#calendrier').fullCalendar('refetchEvents')
发布于 2017-02-10 14:00:16
这在OnQuerySucceed函数的末尾起到了作用
jQuery('#calendrier').fullCalendar('removeEventSources', eventSourceArray)
jQuery('#calendrier').fullCalendar('addEventSource', eventSourceArray)
https://stackoverflow.com/questions/42094889
复制