2017-02-07 20 views
1

私は、イベントソースとしてSharePoint 2013リストを使用しています。データテーブルとして使用されているので特別なものはありません。私はクライアントのJavaScript APIを使用して機能を(リストから)の項目を取得していますSharePoint 2013のイベントとAsyncQueryリスト

executeQueryAsync

ここでは、私が直面してる問題はdeletegatefunctionトリガーというコード

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が完了したときのみです。 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')); 
    } 

} 

"警告"はテスト目的のみです。この機能にアラートを入力すると、そのアラートが表示されます。ただし、ソースにプッシュされたイベントは表示されません。クエリが完了したらカレンダーを更新する方法を探しています。

UPDATE:私が表示したい イベントがイベントソースとして使用されている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)を表示するアラートを追加し、項目)はすべてそこにある

UPDATE:

は私の配列でイベントをリセットしようとしました

events: eventSourceArray 

を呼び出してから、refetchEventsを呼び出すhttps://fullcalendar.io/docs/event_data/refetchEvents/

jQuery('#calendrier').fullCalendar('refetchEvents') 

答えて

0

これはOnQuerySucceed関数の最後にトリックをした

jQuery('#calendrier').fullCalendar('removeEventSources', eventSourceArray) 
jQuery('#calendrier').fullCalendar('addEventSource', eventSourceArray) 
関連する問題