如何使用json为fullcalendar的events对象传递动态参数?
我使用带有json提要的fullcalendar,代码如下如何使用json为fullcalendar的events对象传递动态参数?,fullcalendar,Fullcalendar,我使用带有json提要的fullcalendar,代码如下 $('#calendar').fullCalendar({ theme: true, header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay' }, editable: true,
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: {
url: '/EventInfo/GetEventsByEmployee',
cache: false,
lazyFetching:true,
type: 'POST',
data: {
empId: $('#eventownerId').val()
},
error: function () {
alert('there was an error while fetching events!');
},
},
dayClick: function (date, allDay, jsEvent, view) {
displayDayEvents(date, allDay, jsEvent, view);
},
eventRender: function (event, element) {
element.find('.fc-event-time').hide();
element.attr('title', event.tip);
}
});
$('#dropdownlistId').change(function (e) {
$('#calendar').fullCalendar('destroy');
RenderCalendar($(this).val());
});
这里,我将下拉控件的选定值作为“empId:$(“#eventownerId”).val()通过数据字段传递。它在页面加载时返回正确的数据。
现在我想在用户从下拉列表中选择选项时重新加载日历数据。
为此,我使用了以下代码
$('#eventownerId').change(function (e) {
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('refetchEvents');
});
但refetch使用旧数据(即下拉控件的初始值)调用json方法,甚至下拉控件的选定值也已更改。
如何传递下拉控件的当前值并重新加载完整日历?您是否尝试过在变量中获取id,然后像这样做
var id = $('#eventownerId').val(); //outside
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: {
url: '/EventInfo/GetEventsByEmployee',
cache: false,
lazyFetching:true,
type: 'POST',
data: {
empId: id // var in here
},
error: function () {
alert('there was an error while fetching events!');
},
},
dayClick: function (date, allDay, jsEvent, view) {
displayDayEvents(date, allDay, jsEvent, view);
},
eventRender: function (event, element) {
element.find('.fc-event-time').hide();
element.attr('title', event.tip);
}
});
另一件事是检查ID是否确实从下拉列表中获取了不同的ID。能否显示GetEventsByEmployee方法?干杯我通过调用fullcalendar的destroy解决了这个问题,如下所示
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: {
url: '/EventInfo/GetEventsByEmployee',
cache: false,
lazyFetching:true,
type: 'POST',
data: {
empId: $('#eventownerId').val()
},
error: function () {
alert('there was an error while fetching events!');
},
},
dayClick: function (date, allDay, jsEvent, view) {
displayDayEvents(date, allDay, jsEvent, view);
},
eventRender: function (event, element) {
element.find('.fc-event-time').hide();
element.attr('title', event.tip);
}
});
$('#dropdownlistId').change(function (e) {
$('#calendar').fullCalendar('destroy');
RenderCalendar($(this).val());
});
RenderCalendar()是
我用这个方法解决了问题,但不确定这是正确的方法。i、 e.销毁和重新创建日历。我仍在寻找正确的方法我尝试了将“var id”保持在外部的方法,但它不起作用。也可以在每个选择上提供不同的值。问题是$('#calendar')。fullCalendar('refetchEvents')使用初始(加载时间)下拉值调用GetEventsByEmployee()方法。GetEventsByEmployee()的代码
public JsonResult GetEventsByEmployee(双开始,双结束,int-empId){var startDateTime=FromUnixTimestamp(开始);var endDateTime=FromUnixTimestamp(结束);//从db获取数据的一些代码返回Json(eventList.ToArray(),JsonRequestBehavior.AllowGet);}