rerenderEvents/refetchEvents问题

use*_*947 8 parameters fullcalendar

我不确定我是否正确使用这个,所以我的问题可能是我的误解而不是错误或更大的问题.

我有一个完整的日历,可以从这样的doc准备就绪(为简洁起见,省略了一些代码).

   function renderEvents() {
        var date = new Date();
        var d = date.getDate();
        var m = date.getMonth();
        var y = date.getFullYear();
        var technicians = $("div[ID*='ucTechnicians'] :hidden").val();

        var calendar = $('#calendar').fullCalendar({


       ...
            events: "JsonResponse.ashx?technicians=" + technicians,
       ...    
    }
Run Code Online (Sandbox Code Playgroud)

json响应页面成功返回由初始加载时由所选技术人员过滤的事件.在主页面上是一个控件,用于更改用户希望在日历上看到的技术人员.我无法让日历重新渲染并将技术人员参数传递给json reposne文件.

从按钮单击我尝试再次调用renderEvents().这会在页面上显示重复的日历.我在调用renderEvents()之前尝试过$('#calendar').('destroy').这是有效的,但如果我在一个视图以外的默认月视图中它将全部重置并且销毁重建日历似乎需要很多工作才能刷新.

我也试过$('#calendar').('rerenderEvents')和$('#calendar').('refetchEvents').我甚至试图提前重置源$('#calendar').fullCalendar('addEventSource','JsonResponse.ashx?technicans ='+技术人员).

在最后一种情况下,我能够在调试中观察json响应并获取filter参数并返回由最新参数过滤的结果,但页面上的日历不会刷新新值.

如何使用新参数刷新日历?

提前致谢.

Sco*_*ler 14

在伪,删除旧事件,添加新事件源,然后重新获取事件(从唯一的源,现在是新源):

  • 这是未经测试的,但请尝试删除旧事件:

$( '#日历').fullCalendar( 'REMOVEEVENTS')

  • 然后添加新的事件源(根据文档,这应该获取事件并在屏幕上显示它们,但它似乎不起作用,所以请使用下一个命令,如刷新):

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


编辑: 而不是:

然后重新获取并呈现新事件:

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

要么:

  • 如上所述,使用以下命令,运行addEventSource会获取新事件,因此这应该呈现新获取的事件:

$( '#日历').fullCalendar( 'rerenderEvents')


use*_*947 10

谢谢您的帮助!

以下是根据Scoobler的建议工作的步骤:(1)removeEvents.(2)addEventSource,(3)rerenderEvents.

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