我使用的是带有json feed的完整日历,代码如下
$('#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);
}
});在这里,我将下拉控件的选定值作为"empId:$('#eventownerId').val()“传递给数据字段。它在页面加载时返回正确的数据。现在我想在用户从下拉列表中选择选项时重新加载日历数据。为此,我使用了以下代码
$('#eventownerId').change(function (e) {
$('#calendar').fullCalendar('removeEvents');
$('#calendar').fullCalendar('refetchEvents');
});但是refetch使用旧数据调用json方法(即down控件的初始值),甚至选择的down值也已更改。如何传递下拉控件的当前值并重新加载完整的日历?
发布于 2013-05-11 13:45:31
我通过调用destroy of fullcalendar解决了这个问题,如下所示
$('#dropdownlistId').change(function (e) {
$('#calendar').fullCalendar('destroy');
RenderCalendar($(this).val());
});而RenderCalendar()是
function RenderCalendar(eId) {
$('#calendar').fullCalendar({
theme: true,
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
editable: true,
events: {
url: '/EventInfo/GetEventsByEmployee',
cache: true,
type: 'POST',
data: {
empId: eId
},
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);
}
});
}我用这个解决了这个问题,但不确定这是不是正确的解决方法。即销毁和重新创建日历。我还在寻找正确的方法
发布于 2013-05-11 03:44:32
你有没有尝试过在一个变量中获取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是否真的从dropdown获取不同的id。你能展示一下GetEventsByEmployee方法吗?干杯
https://stackoverflow.com/questions/16482290
复制相似问题