2013-05-10 52 views
1

我使用fullcalendar使用JSON飼料,代碼如下如何使用json傳遞fullcalendar的事件對象的動態參數?

$('#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');    
    }); 

但是重取調用與舊數據的JSON方法(即下拉控制的初始值),即使選擇的下拉已被改變的值。 如何傳遞下拉控件的當前值並重新加載fullcalendar?

回答

7

我通過調用破壞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); 
     } 
    }); 
} 

使用這個我管理的問題,但不知道這是正確的方式正在做。即銷燬和重新創建日曆。我仍然在尋找正確的方法

0

您是否嘗試過在var中獲取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方法嗎?乾杯

+0

我試過在外面保留'var id'的方法,但它不起作用。同時下降,給每個選擇不同的價值。問題是$('#calendar')。fullCalendar('refetchEvents')使用初始(加載時間)下拉值調用GetEventsByEmployee()方法。代碼GetEventsByEmployee()'public JsonResult GetEventsByEmployee(double start,double end,int empId) { var startDateTime = FromUnixTimestamp(start); var endDateTime = FromUnixTimestamp(end); //一些代碼從db中獲取數據 return Json(eventList.ToArray(),JsonRequestBehavior.AllowGet); }' – bhushan 2013-05-11 04:34:21

相關問題