rerenderEvents / refetchEvents problem

Thanks for the help!

Here is what worked based on Scoobler's suggestions the steps that work are (1) removeEvents. (2) addEventSource, (3) rerenderEvents.

$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);
$('#calendar').fullCalendar('rerenderEvents');

$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);
$('#calendar').fullCalendar('rerenderEvents');

The above solution works, but every time you run it, it add an eventSource.

So when you need to run $('#calendar').fullCalendar('refetchEvents'); you will get events from all sources, so many dublicate events and events from all previous sources.

The solution that works for me good is:

$('#calendar').fullCalendar('removeEventSource', 'JsonResponse.ashx?technicans=' + technicians);
technicians = new_technicians_value;
$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians);

And there is no need for "rerenderEvents" or "refetchEvents".

After "addEventSource" events will be immediately fetched from the new source.

After that "refetchEvents" will work as supposed to when needed.


In pseudo, remove old events, add a new event source, then refetch events (from the only source, which is now the new source):

  • This is untested, but try removing the old events:

$('#calendar').fullCalendar('removeEvents')

  • Then add the new event source (According the the documentation, this should fetch the events and display them on the screen, but it appears not to work, so follow it with the next command which is like a refresh):

$('#calendar').fullCalendar('addEventSource', 'JsonResponse.ashx?technicans=' + technicians)


EDIT: Instead of:

Then refetch and render the new events:

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

OR:

  • Use the following, as you mention, running addEventSource fetches the new events, so this should render the newly fetched events:

$('#calendar').fullCalendar('rerenderEvents')


newEvents = [...]

 $('#calendar').fullCalendar('removeEvents');
 $('#calendar').fullCalendar( 'addEventSource', newEvents);

no need to 'rerenderEvents' and works like a charm!