rerendering events in fullCalendar after Ajax database update

后端 未结 7 738
渐次进展
渐次进展 2020-12-08 01:13

I am trying to have fullCalendar reflect changes made to a database via AJAX. The problem is that it won\'t update the calendar on screen after a successful AJAX call.

相关标签:
7条回答
  • 2020-12-08 01:34

    This is what works in ASP.NET CORE, MVC 6 :

     success: function(events)
     {
            $('#calendar').fullCalendar('rerenderEvents');
            $('#calendar').fullCalendar('refetchEvents');
     }
    

    while this was working in ASP.NET MVC 5:

     success: function(events)
     {
           $('#calendar').fullCalendar('refetchEvents');
     }
    
    0 讨论(0)
  • 2020-12-08 01:39

    For FullCalendar v3.8.0 the following will work:

    var events = [
        {title: 'Business Lunch', start: '2017-12-03T13:00:00'},
        {title: 'Meeting', start: '2017-12-13T11:00:00'},
        {title: 'Conference', start: '2017-12-18', end: '2017-12-20'},
    ];
    
    $('#calendar').fullCalendar({
        defaultDate: '2017-12-12',
        events: function (start, end, tz, callback) {
            callback(events);
        }
    });
    
    events.push({title: 'Party', start: '2017-12-29T20:00:00'});
    $('#calendar').fullCalendar('refetchEvents');
    

    jsbin

    0 讨论(0)
  • 2020-12-08 01:46

    There are several ways. Some less elegant.

    1. If you are using FullCalendar to grab json events:

    $('#calendar').fullCalendar({ events: "json-events.php",    });
    

    Just do:

    $('#calendar').fullCalendar( 'refetchEvents' );
    

    If you want outside method to fetch events you could do. Not elegant but will work

    $('#calendar').fullCalendar( 'removeEventSource', source )
    $('#calendar').fullCalendar( 'addEventSource', source )
    
    0 讨论(0)
  • 2020-12-08 01:46

    What works for me:

    success: function(text) {
                    setTimeout(function(){
                        $("#calendar").fullCalendar("rerenderEvents");
                    },50);
                }
    

    If I do it directly without timeout it does not work, probable due to the $element.fullCalendar variable not yet set completely?

    0 讨论(0)
  • 2020-12-08 01:48

    You can render events in 3 steps..

    1) remove all events

    .fullCalendar( 'removeEvents');
    

    2) add event sourse

    .fullCalendar( 'addEventSource', events);         
    

    3) render events

    .fullCalendar( 'rerenderEvents' );
    

    Like...

    $.ajax({
        type: "POST",
        url: "eventEditXHR.php",
        data: {       //the data    },
        success: function(events)
          {
                  $('#calendar').fullCalendar('removeEvents');
                  $('#calendar').fullCalendar('addEventSource', events);         
                  $('#calendar').fullCalendar('rerenderEvents' );
           }.
         });
    
    0 讨论(0)
  • 2020-12-08 01:49
     eventDrop: function (event, delta, revertFunc) {
                var id = event.id;
                var start = event.start.format();
    
                $.ajax({
                    url: getURLRoot() + 'Diary/UpdateEventTimestamp',
                    type: "POST",
                    data: { id: id, start: start },
                    success: function () {
                        $('#calendar').fullCalendar('refetchEvents');
                    }
                });
            }
    
    0 讨论(0)
提交回复
热议问题